我想在我的Android数据库上使用这个查询,但它不返回任何数据。 我错过了什么吗? SQLiteDatabase db = mDbHelper.getReadableDatabase(); String select = "Select _id, title, title_raw from search Where(title_raw like " + "'%Smith%'" + ")"; Cursor cursor = db.query(TABLE_NAME, FROM, select, null, null, null, null); startManagingCursor(cursor); return cursor;
我是SQLite的新手。 有没有办法可以将查询结果导出到CSV文件?
我很难理解如何在Android上使用全文search(FTS)。 我已经阅读了FTS3和FTS4扩展的SQLite文档 。 而且我知道可以在Android上进行 。 但是,我很难find任何可以理解的例子。 基本的数据库模型 SQLite数据库表(名为example_table )有4列。 但是,只有一列(名为text_column )需要进行全文search索引。 每行text_column包含长度从0到1000个字的文本。 总行数大于10,000。 你将如何设置表格和/或FTS虚拟表格? 你将如何在text_column上执行FTS查询? 补充笔记: 因为只有一列需要被索引,所以对于非FTS查询 ,只使用FTS表(并且丢弃example_table )将是低效的 。 对于如此大的表格,在FTS表中存储重复的text_column条目将是不可取的。 这篇文章build议使用外部内容表 。 外部内容表使用FTS4,但在Android API 11之前不支持 FTS4。 答案可以假设一个API> = 11,但评论支持较低版本的选项将是有帮助的。 更改原始表中的数据不会自动更新FTS表(反之亦然)。 在你的答案中包括触发器对于这个基本的例子来说是不必要的,但是仍然会有帮助。
为什么使用SQLAlchemy插入100,000行的简单testing用例比使用sqlite3驱动程序直接慢25倍呢? 我在实际应用中看到类似的减速。 我做错了什么? #!/usr/bin/env python # Why is SQLAlchemy with SQLite so slow? # Output from this program: # SqlAlchemy: Total time for 100000 records 10.74 secs # sqlite3: Total time for 100000 records 0.40 secs import time import sqlite3 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.orm import scoped_session, […]
我正在做我的第一个应用程序与数据库,我有一点点了解onUpgrade函数的麻烦。 我的数据库有一个表和一个项目和一个最喜欢的列,以便用户可以collections一个项目。 我看到的大多数实现只是删除表并重build它,但我不想这样做。 我想能够添加更多的项目到表中。 当应用程序通过android marketplace升级时,数据库是否知道它的版本号? 所以,我可以增加代码中的版本号,然后将其导出到市场,当用户第一次启动升级版本时,onUpgrade将被调用? 如果是这样的话,我的onUpgrade会简单地从文件中拉出来,并添加数据库项目。这是一个标准的做事方式,或者有更好的方式来处理这在Android中。 我正在尽可能保持标准。 谢谢
我在SQLite的JDBC驱动程序有问题。 我正在用SELECT语句执行查询。 如果我得到一个空的ResultSet (0行),那么当调用getString(1)时,会看到一个“Closed ResultSet”exception。 没有很多以前的JDBC经验,我的理论(我无法通过JavaDocs确认ResultSet )是这样的 getString(1)不能在空的(零行)结果集上工作(按照devise或由于错误) ResultSet的“打开”标志在零行上设置为false (同样,按devise或错误) 我看到这个错误报告,但不知道是否相关。 我的问题是: 上面的理论是正确的吗? 这是一个错误? 特征? (如果是的话,有人可以指出文件吗?) 在所有JDBC驱动程序中,它是特定于SQLIte的JDBC还是genericsResultSet ? 做这样的事情的正确方法是什么? ? 对于#4,我的解决scheme是在executeQuery()之后使用isFirst() executeQuery()来检查结果集中是否有任何行。 这是最好的做法吗? (我也可以简单地select一个计数插入因为我不需要一个结果集,只是零非零的标志,但如果我真的关心select的结果,我想知道正确的事情) 谢谢!
我正在做一个项目在wicket如何解决这个问题。 我碰到过这样的消息:WicketMessage:无法使用构造函数实例化页面public itucs.blg361.g03.HomePage() 根本原因: java.lang.UnsupportedOperationException:[SQLITE_BUSY]数据库文件被locking(数据库被locking)在itucs.blg361.g03.CategoryEvents.CategoryEventCollection.getCategoryEvents(CategoryEventCollection.java:41) public List<CategoryEvent> getCategoryEvents() { List<CategoryEvent> categoryEvents = new LinkedList<CategoryEvent>(); try { String query = "SELECT id, name, group_id" + " FROM event_category"; Statement statement = this.db.createStatement(); ResultSet result = statement.executeQuery(query); while (result.next()) { int id = result.getInt("id"); String name = result.getString("name"); int group_id = result.getInt("group_id"); categoryEvents.add(new CategoryEvent(id, name, group_id)); } […]
当我尝试将我的Rails 3应用程序部署到Heroku,并且在gems文件中定义了sqlite3时,我遇到了与Heroku部署问题中描述的相同的情况。 /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in`require':no such file to load – sqlite3(LoadError) 任何线索为什么这是? 在ruby论坛的作品定义的解决scheme,我只是想知道为什么。
我只是学习SQLite,我不能让我的参数编译到正确的命令。 当我执行下面的代码: this.command.CommandText = "INSERT INTO [StringData] VALUE (?,?)"; this.data = new SQLiteParameter(); this.byteIndex = new SQLiteParameter(); this.command.Parameters.Add(this.data); this.command.Parameters.Add(this.byteIndex); this.data.Value = data.Data; this.byteIndex.Value = data.ByteIndex; this.command.ExecuteNonQuery(); 我得到一个SQLiteexception。 在检查CommandText时,我发现无论我在做什么都不正确地添加参数: INSERT INTO [StringData] VALUE (?,?) 任何想法我失踪? 谢谢
我得到的数据库locking SQLite的exception只有一些查询。 下面是我的代码:当我执行任何select语句,它工作正常。 当我在Jobs Table上执行任何写入语句时,它也能正常工作。 这工作正常: ExecuteNonQuery("DELETE FROM Jobs WHERE id=1"); 但是,同样的方式,如果我正在执行查询Employees表,它是抛出一个exception, 数据库被locking 。 这抛出exception: ExecuteNonQuery("DELETE FROM Employees WHERE id=1"); 以下是我的function: public bool OpenConnection() { if (Con == null) { Con = new SQLiteConnection(ConnectionString); } if (Con.State == ConnectionState.Closed) { Con.Open(); //Cmd = new SQLiteCommand("PRAGMA FOREIGN_KEYS=ON", Con); //Cmd.ExecuteNonQuery(); //Cmd.Dispose(); //Cmd=null; return true; } if (IsConnectionBusy()) […]