gpt4 book ai didi

android - 在不丢失现有数据的情况下将预填充表添加到数据库

转载 作者:行者123 更新时间:2023-11-30 04:16:29 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个收藏品的 sqlite 数据库。数据库是预先填充的,但用户添加数据以表明他拥有该特定项目。收藏品按类别分类,每个类别都有自己的表格。

所以在应用程序的第一个版本中,我有 2011 年的棒球运动员,由数字和名字标识。我将 2009 年到 2011 年的所有卡片都放在一个数据库中(每年都有一个表),该数据库位于 Assets 文件夹中并通过 InputStream 导入。到目前为止,一切正常,用户可以添加一个标志,说明他拥有一张卡。

我现在的问题是我想添加 2012 年的卡片,所以我将它们添加为应用程序版本 2 的 Assets 数据库中的附加表。我无法开始工作的是在升级时将新的(预填充的)表添加到现有数据库,而不会丢失用户设置的标志。

显然我不想丢失用户已经输入的数据,所以没有 DROP 表。

我试图通过附加更新的数据库并复制丢失的表来获取 onUpgrade 的新表。不幸的是,我似乎无法在事务期间连接表,如我收到的错误所示:

Failure 1 (cannot ATTACH database within transaction) on 0x2a1900 when executing 'ATTACH DATABASE '/data/data/my.app/databases/updateddb' as myNewDb'

我是否遗漏了什么,有解决方法吗?还是我的做法有误?

最佳答案

当您更新您的应用程序时,使用 onUpgrade 方法将表添加到现有数据库..

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("create table "
+ LIBRARY + "( " + COLUMN_ID
+ " integer primary key autoincrement, " + COLUMN_NAME
+ " text not null, "+COLUMN_URL
+ " text not null);");
//and populate the table
}

这只会向现有数据库添加一个表..

关于android - 在不丢失现有数据的情况下将预填充表添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905255/

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