相关疑难解决方法(0)

在sqlite中将新列插入表中?

我有一个列的表name,qty,rate.现在我需要COLNewnameqty列之间添加一个新列.如何在两列之间添加新列?

sqlite

334
推荐指数
5
解决办法
31万
查看次数

Android SQLite:使用新数据库替换旧数据库或使用迁移脚本

我有一个Android应用程序,它使用SQLite数据库和Active Android作为ORM.在每次应用更新时,我需要使用新的/更新的数据发送我的数据库.这就是我一直在做的事情

  1. 我有一个my_app.db数据库
  2. 我对my_app.db的行,表等进行了修改
  3. 我将修改后的my_app.db保存为my_app_v2.db(依此类推)
  4. 我更换my_app.db与资产的文件夹的文件my_app_v2.db并将其设置为默认的数据库
  5. 我使用新创建的my_app_v2.db编译并运行程序

因此,当用户获取应用程序时,它将使用带有新内容的my_app_v2.db.

我知道Active Android 支持迁移脚本,但在每次数据库更新时,我需要添加/更新大约2000多条记录.因此,对于每个数据库更新,我需要一个包含2000多个插入/更新语句的迁移脚本,这意味着对于3个以上的连续升级,应用程序必须执行大约6000多个语句.

我想知道我用新的数据库替换整个数据库的方法是不好的做法,应该首选迁移脚本.

database sqlite android

7
推荐指数
1
解决办法
3401
查看次数

如何管理移动应用中sqlite的大小增加?

有时需要将我的应用程序与Web服务器同步,并在移动sqlite数据库中提取数据以供脱机使用,因此数据库大小正呈指数级增长。
我想知道像whatsapp,hike,evernote等专业应用如何管理其离线sqlite数据库。
请建议我解决此问题的步骤。

PS:我问的是脱机数据库(即同步后大小增加)管理,不要与数据库与Web服务器同步混淆。

database sqlite mobile android

7
推荐指数
1
解决办法
468
查看次数

Android如何更新,但保留数据库信息

我有一个使用SQLite数据库的应用程序.当应用程序更新时,它会完全覆盖数据库.

当我想将用户当前进度转移到新更新时,会出现问题.db表包含多行问题.每行包含1个问题,答案,正确答案的原因,用户是否已应答,以及用户是否正确回答.

在更新中,可能已删除问题和/或添加其他问题.唯一需要保留的数据是,如果问题已得到解答并且问题得到正确回答.除了将旧数据库的每一行中的唯一数字或字符串与新数据库进行比较之外,是否有更好的方法来传输数据?

超过100行,这似乎是非常耗费资源的.虽然我看不出另一种绕过这个问题的方法.

我们将非常感激地提出任何建议和帮助.

java sqlite android

6
推荐指数
2
解决办法
494
查看次数

SQLite删除和重新创建表

如何删除并重新创建包含更新信息的表?

例如; 我的应用程序中有一张表有5条记录.

ID     Entry
1      a
2      b
3      c
4      d
5      e
Run Code Online (Sandbox Code Playgroud)

现在,当我删除一条记录时,表示ID 3会变成

 ID     Entry
1      a
2      b
4      d
5      e
Run Code Online (Sandbox Code Playgroud)

如何删除它,并重新创建它成为:

  ID     Entry
1      a
2      b
3      d
4      e
Run Code Online (Sandbox Code Playgroud)

实际上删除是由用户控制的,因此任何记录都可以随时删除.

sqlite android sql-drop

5
推荐指数
1
解决办法
4万
查看次数

已发布应用程序上的 Sqlite 表和数据库迁移?

我在 react-native 和 expo 中开发了一个 android 应用程序。我还在 google play 上发布了该应用程序。

现在,我在本地对我的 SQLite 数据库表进行了一些修改。

假设,在表的架构之前是这样的:

CREATE TABLE expenditures (id integer primary key, max_amount REAL not null);
Run Code Online (Sandbox Code Playgroud)

现在我想把它改成这样:

CREATE TABLE expenditures (id integer primary key, max_amount TEXT not null);
Run Code Online (Sandbox Code Playgroud)

在生产应用程序(谷歌游戏商店)上进行新的更新/升级后,有什么方法可以运行方法吗?这样升级后我只能更改一次表,其他新安装的用户不会受到此功能的影响。我在原生android上找到了两种方法:

  1. onCreate:需要创建表时第一次调用。
  2. onUpgrade:升级数据库版本时调用此方法。

但是由于我使用 react-native 和 expo 开发了我的应用程序,所以我不能使用上述方法。虽然我onUpgrade 在 expo 代码中找到,但我不确定如何在 expo 中使用此功能。

或者有没有更好的方法来处理在 react-native 和 expo 中发布的应用程序上的数据库迁移?

sqlite android database-migration react-native expo

5
推荐指数
1
解决办法
1565
查看次数