Articles of SQLite

android sqlite双向同步sqlite

我需要将我的Android SQLite数据库与我的云服务器数据库同步,并在多用户环境中以双向方式进行。 我已经在这里find并介绍了解决方案,但我想了解更好的解决方案/算法。

在Android中管理SQLite连接

关于在Android中处理SQLite数据库连接,我有一个(希望)快速的问题。 我有一个应用程序,当然由几个活动组成。 我创建/更新/查询数据库没有问题,因为我已经创建了一个专用的类来通过SQLiteOpenHelper等来处理这项工作。 我的问题是:由于这些活动都共享同一个数据库,这通常是作为单个静态成员实现的,还是每个活动都拥有自己的连接? 我当然关心的是每次活动中重新连接数据库的成本。 或者换句话说,有没有理由不存储单例实例? 我也想知道幕后是否会发生类似于.NET连接池的事情,以降低打开连接的成本。 提前致谢!

增加android / sqlite数据库中记录的值

我尝试在表中的行中增加整数键的值。 然而,似乎没有任何事情发生。 db.rawQuery(“UPDATE table SET key = key + 1 WHERE name=?”, new String[] {name}); 但是,此代码工作正常(只需将密钥设置为硬编码值): ContentValues values = new ContentValues(); values.put(“key”, 2); db.update(“table”, values, “name=?”, new String[] {name}); 还试过’?’ 而不只是?,但它只是导致运行时错误。

使用Spock和Robospock创建SQLite数据库的unit testing

spock-core:0.7-groovy-2.0 robospock:0.5.0 Android Studio 0.8.2 Fedora release 20 (Heisenbug) 这是完整的解决方案。 现在它成功编译并运行unit testing,目录结构与预览编辑相同。 请随意评论任何看起来不正确的事情。 编辑解决方案===== 的build.gradle: apply plugin: ‘java’ apply plugin: ‘groovy’ repositories { mavenCentral() maven { // Location of Android SDK for compiling otherwise get this error: /* Could not find com.android.support:support-v4:19.0.1. Required by: :testSQLite:unspecified > org.robospock:robospock:0.5.0 > org.robolectric:robolectric:2.3 */ url “/home/steve/local/android-studio/sdk/extras/android/m2repository/” } } dependencies […]

Android:我可以为多个数据库文件使用一个SQLiteOpenHelper类吗?

我的应用程序使用两个数据库(单独的文件) 为了处理这些数据库,我创建了两个扩展SQLiteOpenHelper的Helper类,每个数据库一个。 我现在要添加第三个数据库并想知道是否需要创建另一个Helper类(如果我使用了第4个和第5个数据库,我还需要更多的Helper类),或者我可以使用相同的Helper类来实现多个数据库? 我在尝试使用一个Helper类时遇到的问题是我无法看到如何将各个数据库文件的名称传递给Helper。 目前,数据库的名称被硬编码为每个Helper类的静态字段,但是如果我只有一个Helper类,我需要能够在创建单独的Helper时将不同的名称传递给构造函数对象; 问题是SQLiteOpenHelper构造函数似乎只是由Android调用,只有一个参数:Context。

Android:如何保护SQLite数据库中的数据?

我目前正在开发一款将数据保存到SQLite数据库中的Android游戏。 这不是真正的“敏感”数据,但我不希望用户能够修改它(出于游戏平衡的明显原因,因为它会作弊)。 当您的手机植根时 ,访问和修改SQLite数据库非常容易(市场上有很多应用程序)。 那么我是否应该担心这一点,或者考虑使用带有根电话的用户可以做任何他们想做的事情,包括作弊,这是他们的选择? 或者我可以以某种方式加密我不希望他们修改的数据,或添加MD5校验和或类似的东西? 另一种方法是完全放弃SQLite并使用某种二进制文件和游戏数据。 如果你们中的一些人已经遇到过类似的问题,你们采取了哪些方法,以及Android游戏开发社区的“良好实践”,请告诉我们。 谢谢。

Android会议室:如何建立关系模型?

我刚刚开始与Room合作,虽然一切看起来都非常直观,但我目前还不清楚我究竟能如何处理关系。 由于SQLite是关系数据库,因此您可以指定对象之间的关系。 尽管大多数ORM库允许实体对象相互引用,但Room明确禁止这样做。 即使您不能使用直接关系,Room仍然允许您在实体之间定义外键约束。(来源: https : //developer.android.com/topic/libraries/architecture/room.html#no-object-references ) 你应该如何模拟多对多或一对多的关系? 这在实践中会是什么样子(示例DAO +实体)?

共享首选项与数据库

我的数据是简单的属性值,所以我可以存储任何方式,但我想知道哪个更可靠? 共享首选项是否自动保存,因此更可靠? 或者因为它们是非交易性的那么可靠性较差?

Android:光标窗口已满

W / CursorWindow(15677):窗口已满:请求分配2195889字节,可用空间2096720字节,窗口大小2097152字节 我知道有app内存可用: D / dalvikvm(15677):GC_FOR_ALLOC释放9K,30%免费17050K / 24291K,暂停45ms 因此,当将blob读入byte[]时,它纯粹与光标大小窗口有关。 我使用内置方法从游标中读取blob。 try { c = rdb.query(“Photos”, new String[]{“photo”}, “id = ?”, new String[]{“”+photoID}, null, null, null); if(c.moveToFirst()) { byte[] tArray = c.getBlob(c.getColumnIndex(“photo”)); // THIS LINE ERRORS } }catch(Exception e) { e.printStackTrace(); } c.close(); return tArray; 有没有解决的办法? 窗口大小似乎限制为2097152字节。

如何删除多个where args的SQLite中的行?

我想删除满足任何多个条件的行。 例如,我传递了一个ID列表,我想删除所有带有这些IDs行(ID是唯一的)。 这将是: String[] ids = {“0”, “1”, “2”, “3”,…}; database.delete(“rows” , “id=? OR id=? OR id=? OR id=? OR …” , ids ); 有没有办法在没有多个OR情况下紧凑?