我有一个使用 SQLite JDBC 连接器生成的 SQLite 数据库here.
然后,我将此数据库复制到 Android 手机的 SD 卡,并尝试使用 SQLiteOpenHelper 打开它。我得到以下异常:
ERROR/SQLiteOpenHelper(7373): android.database.sqlite.SQLiteException: attempt to write a readonly database: BEGIN EXCLUSIVE;
ERROR/AndroidRuntime(7373): Caused by: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1: /mnt/sdcard/4Trak/4Trak.db
这对我来说没有任何意义。为什么它是只读数据库?我能够首先写入它来生成它,当我意识到我需要一个 android_metadata 表时,我再次使用 SQLite 浏览器添加它。
Sqlite 只会打开应用程序数据库目录中的数据库。
DB_PATH = "/data/data/"+ context.getPackageName() + "/databases/";
为了读取和写入数据库,我的理解是您需要将数据库复制到此位置:
InputStream myInput = myContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
为了进行此复制,您首先必须在数据库文件的最终目的地打开一个数据库:
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
如果您有任何疑问,请告诉我
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)