2011-08-17 17 views
0

私の問題は、Androidアプリケーションで既存のsqlite-databaseを使用することです。私はへの間違ったパスを使用することを疑うAndroidで既存のSQLiteデータベースを使用する

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 

:このアプリは、私はエラーを取得しています、起動している間http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications

- は、それを管理するために、私は自分の仕事を説明し、よく知られた記事を、使用しましたmydatabase.Iは、資産フォルダに私のandroid_test_dbファイルを置くと、ブログに書かれたように、

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

だから、私の質問はありませんこれらのpathesが正しいかありましたか?または、私は共通の間違った方法でいるかもしれませんか?

ありがとうございます。

答えて

2

db名の拡張子は、まったく同じでなければなりません。 さらに、あなたの主な問題は間違ったパッケージを指定したことだと思います。これはルートパッケージでなければなりません。それを試してみてください:

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

はしているようだ、何も - この変更後のbecouse私は間違いを得なかっました:データベースファイルを開くことができません。私のメソッドでエラーをローカライズしました: public int getCountRecords() { カーソルc = myDB.query(DB_NAME、new String [] {"_id"、 "name"、 "age"} 、null、null、null、null、null); return c.getCount(); }; このメソッドは例外をスローします - そのようなテーブルはありません "android_test_table" –

+0

ああ、だが、なぜDB_NAMEでクエリを行うのですか?クエリ(...)の最初のパラメータはテーブル名でなければなりません。 –

+0

Yeeeh、あなたの権利、絶対に。ありがとう、問題は、私の最初の議論はデータベースの名前であってテーブルの名前ではないという点であった。 –

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

関連する問題