0

私はいつも同じコードを使用して、資産フォルダー内のファイルから DB を作成してきましたが、JellyBean 4.3 エミュレーターで同じコードを実行しようとしましたが、この時点で

public DataBaseHelper(Context context, String nomeDB) {
            super(context, nameDB, null, version);
            DB_NAME = nameDB;
            DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
            this.mContext = context;
        }

        public void createDataBase() throws IOException {
        ....
        }

この行でアプリがクラッシュします

DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";

IOException あり

さらに、Eclipse エディターは /data/ パスをハードコーディングしないようにという警告を表示するので、これらの問題を回避するために PATH を記述するより良い方法があると思います。

DB_PATHさまざまなデバイスで発生する可能性のある問題を回避するために、文字列で使用する正しい構文は何ですか?

4

2 に答える 2

1

おそらく IOException は、参照されたパスでデータベースファイルが見つからないことを意味します。パスを構築するのではなく、常に Android の組み込み API メソッドを使用します。

次のメソッドは Context で利用可能で、データベース パスを提供します。

public File getDatabasePath (String name)

openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory) で作成されたデータベースが格納されているファイル システム上の絶対パスを返します。

このリンクで読むことができます。

于 2013-08-22T18:58:15.953 に答える
0

これを試して

DB_PATH = "//data//data/" + context.getPackageName() + "//databases//";

問題が解決するはずです。

于 2013-08-22T18:52:00.847 に答える