【发布时间】:2012-03-28 10:05:18
【问题描述】:
在我的应用程序中,我有一个用于收藏品的 sqlite 数据库。数据库已预先填充,但用户添加数据以表明他拥有该特定项目。收藏品按类别排列,每个类别都有自己的表格。
因此,在应用程序的第一个版本中,我有 2011 年的棒球运动员,由数字和名称标识。我将所有 2009 年到 2011 年的卡片都放在了位于 assets 文件夹中并通过 InputStream 导入的数据库中(每年都有一张表)。到目前为止,一切都很好,用户可以添加一个标志,说明他拥有一张卡片。
我的问题是现在我想添加 2012 年的卡片,因此我将这些卡片作为附加表添加到我的资产数据库中,用于应用程序的第 2 版。我无法开始工作的是在升级时将新的(预填充的)表添加到现有数据库中,而不会丢失用户设置的标志。
显然我不想丢失用户已经输入的数据,所以没有 DROP 表。
我试图通过附加更新的数据库并复制丢失的表来获取新表 onUpgrade。不幸的是,我似乎无法在事务期间附加表,如我得到的错误所示:
执行 'ATTACH DATABASE '/data/data/my.app/databases/updateddb' as myNewDb' 时,0x2a1900 出现故障 1(无法在事务中附加数据库)
我错过了什么,有解决方法吗?还是我走错了路?
【问题讨论】:
-
我也有同样的问题。你解决了吗?