4af*_*eb6 7 sqlite android android-assets
各位,我将数据库从本地资产文件夹复制到/ data/data/package_name/databases目录时遇到问题.当我使用http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ 教程来做这件事时,我只能获得一个空文件.
我引用了copyDataBase()方法的一部分并没有区别.每次应用程序启动时,它都会创建目录和空数据库.那么有什么方法可以使copyDataBase()工作吗?
非常感谢你!!
Gre*_*llo 15
你为什么不从资产中复制?这样做是完全正常的.但是你不能在onCreate中做到这一点,那时已经创建了一个空数据库.你需要事先做好.我通常在getWriteableDatabase的覆盖中执行此操作,例如
public synchronized SQLiteDatabase getWritableDatabase() {
SQLiteDatabase db = null;
if (!doesDatabaseExist()) {
try {
copyDatabase();
db = super.getWritableDatabase();
} catch(Exception ex) {
Log.e("Database Log", getDatabasePath() + " failed to copy correctly. " + ex.getLocalizedMessage());
}
}
else {
db = super.getWritableDatabase();
}
return db;
}
Run Code Online (Sandbox Code Playgroud)
我不会从如果您的数据库中需要一些标准条目,您可以在 -methodassets- 文件夹中复制任何数据库。INSERT中使用 s添加它们onCreate()。
更新:由于这是错误的(这有点正确)而被否决,而且我无法删除它,所以这里有一个小更新。
我想说这取决于您想要添加到数据库中的标准条目数量。如果只是一两个,那么运输打包的数据库可能不值得。
无论如何,一些应用程序带有相当大的数据库(例如,食谱集合)。显然你不能在代码中添加所有这些。
onCreate().为了使后者正常工作,您需要将数据库文件复制到assets/您的应用程序文件夹中。有一个很好的库可以为您处理这个问题:android-sqlite-asset-helper
| 归档时间: |
|
| 查看次数: |
11036 次 |
| 最近记录: |