在Android中使用现有的SQLite数据库

时间:2011-08-17 07:45:51

标签: android sqlite

我的问题是在我的Android应用程序中使用现有的sqlite-database。 为了管理它,我使用了一篇着名的文章来描述我的任务 - http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications

当这个应用程序启动时,我收到错误:

08-17 06:35:18.416: ERROR/Database(286): sqlite3_open_v2("data/data/com.jeston.existed.sqlite/databases/android_test_db.db", &handle, 1, NULL) failed
08-17 06:35:18.437: ERROR/AndroidRuntime(286): Uncaught handler: thread main exiting due to uncaught exception
08-17 06:35:18.457: ERROR/AndroidRuntime(286): android.database.sqlite.SQLiteException: unable to open database file 

我怀疑我使用错误的路径来访问mydatabase.I将我的android_test_db文件放到assets文件夹中,并且如博客中所写,给出了

private final static String DB_PATH = "data/data/com.jeston.existed.sqlite/databases/";
private final static String DB_NAME = "android_test_db.db";

所以,我的问题是这些方法是正确的还是没有?或者可能是,我的方式是错误的?

感谢大家。

2 个答案:

答案 0 :(得分:2)

db名称扩展名必须与原样完全相同。 而且,我认为你的主要问题是你指定了错误的包。它必须是根包。试试这个:

private final static String DB_PATH = "data/data/com.jeston.existed/databases/";

答案 1 :(得分:0)

openDataBase方法应如下所示:

 public void openDataBase() throws SQLException{
    //Open the database
    String myPath = DB_PATH + DB_NAME;
    myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.NO_LOCALIZED_COLLATORS);
}

使用SQLiteDatabase.NO_LOCALIZED_COLLATORS代替SQLiteDatabase.OPEN_READONLY