Articles of SQLite

Android:Fragments,SQLite和Loaders

所以我已经到了需要为我的应用程序实现SQLite数据库的地步。 在“忙碌的编码器Android开发指南”之后,我创建了一个扩展SQLiteOpenHelper的DatabaseHelper类。 我的一个用例是对数据库运行查询并在Fragment的ListView上显示结果(我使用支持库中的片段)。 根据我的理解,使用managedQuery()并不合适,即使它是不推荐的,因为这个方法中封装的一些逻辑实际上是在主线程上执行的,特别是reQuery()我的理解是在重新启动Activity时执行的。 所以我第一次尝试熟悉Loader类,只看到这个: “The only supplied concrete implementation of a Loader is CursorLoader, and that is only for use with a ContentProvider” 我最初的想法是实现我自己的内容提供商,并可能阻止其他应用程序访问它,然后我通过developer.android.com在ContentProvider文档中阅读以下内容: “You don’t need a provider to use an SQLite database if the use is entirely within your own application.” 我也一直在玩这个: https://github.com/commonsguy/cwac-loaderex 但我不熟悉这个项目,也不确定它是否可以在生产环境中使用。 所以,现在我能想到的就是在我的Fragment创建一堆AsyncTask实例并适当地管理它们的生命周期,确保它们在需要时被取消等等。 还有其他选择吗?

什么是现有SQLite数据库的完整Android数据库助手类?

我正在尝试使用现有的SQLite数据库部署应用程序。 我已经阅读并试图在线实现几个示例,但是我发现它们总是丢失一些代码,要么不编译或按照广告的方式工作。 有没有人有一个完整的Android数据库助手类用于在Android上部署现有的SQLite数据库?

Android:使用AUTOINCREMENT列插入sqlite记录

我在android上创建了一个sqlite数据库,如下所示: sqlite> .schema CREATE TABLE criterion (‘_id’ INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, active text, important text, sort int, summary text, user text, category_id int, entrytype int); 我可以在此表中插入记录的唯一方法是为_id指定一个我想要自动递增的值。 这是我可以使插入工作的唯一方法: recid = totalrecs + 1; String q = “insert into criterion (_id, active, important, sort, summary, user, category_id, entrytype) values (” + recid + “, \”1\”, […]

如何将图像保存到数据库中

我想知道是否有一种方法可以将图像(types为.gif)保存到sqllite数据库中。 如果是,我的DatabaseAdapter应该如何。 还有性能问题吗?

升级SQlite表的难度

我有一个运行一个名为ANIMAL的工作表的应用程序。 首次创建此表时,它只包含_id和animal_name列。 现在我正在努力扩展它,包括一个animal_biography专栏,但是我有一点困难。首先我认为我只是升级我的CREATE_TABLE语句以包含动物生物: private static final String DATABASE_CREATE = “create table ” + ANIMALS_TABLE + ” (_id integer primary key autoincrement, ” + “animal_name text not null, ” + “biography text not null);”; 然而,看着logcat,它告诉我当试图插入时,列传记不存在。 现在,我尝试使用onUpgrade()并包含代码来升级数据库 db.execSQL(“ALTER TABLE” + DATABASE_NAME); db.execSQL(DATABASE_CREATE); 但这也没有解决问题。 有没有人有任何关于如何解决这个问题的指示?

在Android中使用预准备语句查询?

在Android中, android.database.sqlite.SQLiteStatement允许我在SQLite中使用android.database.sqlite.SQLiteStatement准备语句来避免注入攻击。 它的execute方法适用于创建/更新/删除操作,但似乎没有任何方法可用于返回游标等的查询。 现在在iOS中我可以创建sqlite3_stmt*types的sqlite3_stmt*准备语句并将它们用于查询,所以我知道这不是SQLite的限制。 如何在Android中使用预准备语句执行查询?

如何在SQLite中将毫秒转换为日期

我从Calendar.getTimeInMilliseconds()在SQLite DB中存储日期。 我需要在SELECT语句中按月标记第一行,因此我需要使用SQLite函数将时间(以毫秒为单位)转换为任何日期格式。 我怎么能避免这个?

将SQLite数据库从一个版本升级到另一个版本?

我从Logcat得到一个错误,说某个列(在我的SQLiteOpenHelper子类中)不存在。 我以为我可以通过更改DATABASE_CREATE字符串来升级数据库。 但显然不是,那么我如何(逐步)将我的SQLite数据库从版本1升级到版本2? 如果问题看起来像“noobish”,我道歉,但我还在学习Android。 @ Pentium10这是我在onUpgrade上做的事情: private static final int DATABASE_VERSION = 1; …. switch (upgradeVersion) { case 1: db.execSQL(“ALTER TABLE task ADD body TEXT”); upgradeVersion = 2; break; } …

如何从Android设备中提取sqlite数据库?

如何从像Android模拟器的Android设备中拉出sqlite数据库?

Android SQLIte错误:无法从CursorWindow读取第0行第1列

我正在使用我使用sqlitebrowser创建的预先填充的slqite数据库。 我已将数据库文件(它似乎没有扩展名)放入我的资源文件夹中。 我正在使用每个人似乎都在使用的标准databasehelper类。 05-09 13:04:55.746 894-894/com.myapp.myappname E/CursorWindow﹕ Failed to read row 0, column 1 from a CursorWindow which has 19 rows, 1 columns. 05-09 13:04:55.766 894-894/com.myapp.myappname D/AndroidRuntime﹕ Shutting down VM 05-09 13:04:55.766 894-894/com.myapp.myappname W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40a71930) 05-09 13:04:55.876 894-894/com.myapp.myappname E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.myappname/com.myapp.myappname.MainActivity}: java.lang.IllegalStateException: […]