简体   繁体   English

使用SQLiteAssetHelper在Android上的资产/数据大小限制?

[英]Asset/data size limit on android using SQLiteAssetHelper?

Everything was working fine before I added some "big" tables to my file. 在向文件中添加一些“大”表之前,一切工作正常。

I have a table that weights about 2Mo, and now I am getting this error : 我有一个权重约为2Mo的表,现在出现此错误:

07-19 00:47:51.210 4703-4703/com.lectem.gecharacters W/SQLiteAssetHelper﹕ copying database from assets... 07-19 00:47:51.280 4703-4705/com.lectem.gecharacters E/Database﹕ close() was never explicitly called on database '/data/data/com.lectem.gecharacters/databases/gechar2.sqlite' android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1810) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817) at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.returnDatabase(SQLiteAssetHelper.java:408) at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.createOrOpenDatabase(SQLiteAssetHelper.java:386) at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.getWritableDatabase(SQLiteAssetHelper.java:182) at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.getReadableDatabase(SQLiteAssetHelper.java:254) 07-19 00:47:51.210 4703-4703 / com.lectem.gecharacters W / SQLiteAssetHelper:从资产中复制数据库... 07-19 00:47:51.280 4703-4705 / com.lectem.gecharacters E / Database关闭()从未在数据库'/data/data/com.lectem.gecharacters/databases/gechar2.sqlite'上显式调用android.database.sqlite.DatabaseObjectNotClosedException:应用程序未关闭在android此处打开的游标或数据库对象。 com上的android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)上的database.sqlite.SQLiteDatabase。(SQLiteDatabase.java:1810)在com上的com.readystatesoftware.sqliteasset.SQLiteAssetHelper.returnDatabase(SQLiteAssetHelper.java:408)在com.readystatesoftware.sqliteasset.SQLiteAssetHelper.getWritableDatabase(SQLiteAssetHelper.java:182)处的readystatesoftware.sqliteasset.SQLiteAssetHelper.createOrOpenDatabase(SQLiteAssetHelper.java:386)在com.readystatesoftware.sqliteasset.SQLiteAssetHelper.SQLiteAssetHelper。

I tried to empty the table, and it works again after this... I am using the SQLite Manager plugin for Firefox, and the SQLiteAssetHelper library. 我试图清空该表,并且在此之后它又可以工作...我正在使用Firefox的SQLite Manager插件和SQLiteAssetHelper库。

Can't open database with SQLiteAssetHelper didn't help. 无法使用SQLiteAssetHelper打开数据库没有帮助。

EDIT: I forgot to mention that it works fine on my phone (android 4.1) but the error occurs on my Tablet (android 2.2.1) 编辑:我忘了提及它在我的手机(android 4.1)上可以正常工作,但在我的平板电脑(android 2.2.1)上发生了错误

The answer was in the readme... https://github.com/jgilfelt/android-sqlite-asset-helper I was compressing my database using gzip, but it seems you really need to use zip for old devices. 答案在自述文件中…… https://github.com/jgilfelt/android-sqlite-asset-helper我正在使用gzip压缩数据库,但是看来您确实需要在旧设备上使用zip。

Earlier versions of this library required the database asset to be compressed within a ZIP archive. 该库的早期版本要求将数据库资产压缩在ZIP存档中。 This is no longer a requirement, but is still supported. 这不再是必需的,但仍受支持。 Applications still targeting Gingerbread (API 10) or lower should continue to provide a compressed archive to ensure large database files are not corrupted during the packaging process. 仍以Gingerbread(API 10)或更低版本为目标的应用程序应继续提供压缩存档,以确保大型数据库文件在打包过程中不会损坏。 The more Linux friendly GZIP format is also supported. 还支持更Linux友好的GZIP格式。 The naming conventions using the above example are as follows: 使用以上示例的命名约定如下:

 ZIP: assets/databases/northwind.db.zip (a single SQLite database file must be the only file within the archive) GZIP: assets/databases/northwind.db.gz 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM