gpt4 book ai didi

android - 附加数据库在 Android 上给出 "database is already in use"

转载 作者:太空狗 更新时间:2023-10-29 14:45:30 27 4
gpt4 key购买 nike

在 iOS 和 android 上的原生应用程序项目中,我们遇到了 android 上的 sqlite3 问题。我们想打开两个数据库并通过ATTACH DATABASE将一个数据库附加到第二个数据库。 (sql 命令)。

我们做什么:

  1. 打开 sqlite3 数据库“user.db”(android 上的最终 native 文件路径设备是'/data/user/0/com.company.app/databases/user.db',我们使用android.database.sqlite.SQLiteDatabase)

  2. 打开sqlite3数据库“system.db”

  3. 将用户数据库附加到系统数据库:

在 system.db 数据库的 SQLiteDatabase 实例上,我们执行

ATTACH DATABASE '/data/user/0/com.company.app/databases/user.db' AS dbUser

结果:

这会产生以下错误:

Database dbUser is already in use (code 1)

相同的 sql 语句在 iOS 的 sqlite3 上运行良好,没有任何错误。

为了完整起见。使用以下语句打开数据库:

import android.database.sqlite.SQLiteDatabase;

SQLiteDatabase mydb = SQLiteDatabase.openDatabase(dbfile.getAbsolutePath(), null, openFlags);

向 go​​ogle 询问此类错误消息会给出很多网站声明,不允许使用 TEMP 作为数据库别名。由于我们使用“dbUser”而不是 TEMP,所以应该还有其他原因。我们现在无法弄清楚。

有人可以帮忙吗?

最佳答案

您不需要打开要附加的数据库; ATTACH 语句已经打开它。

无论如何,错误“数据库 xxx 已在使用中”表明某些数据库已经附加了该特定名称。

你的代码的问题是它被执行了两次。

关于android - 附加数据库在 Android 上给出 "database is already in use",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40823682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com