2009-07-09 11 views
43

AndroidデバイスにSQLiteデータベースを作成しました。プログラムはデータベースに読み書きすることができるので、明らかにデータベースファイルが作成されています。 SQLiteDatabase.mPathはAndroid:データベースファイルはどこに保存されていますか?

db.mPath = "/data/data/dev.client.android/databases/clientDB.db" 

に設定されているが、私は、デバイス上のディレクトリを参照するとき、私は、ファイルclientDB.dbを見つけることができません。私はデータディレクトリの中を見ましたが、空であるようです。

ここで何が間違っているのでしょうか?

答えて

28

あなたが/dataにアクセスして何も見つからず、通常のAndroidハードウェアを調べていることを意味する場合は、これが予想されます。 DDMSには/dataを閲覧する権限がありません。

ただし、少なくともアプリケーションがデバッグモードでコンパイルされている場合は、コンソールでadb pullコマンドを使用して直接ファイルをダウンロードできます。

+0

デバイスファイルマネージャで 'filename.sqlite'を検索しましたが、結果が表示されません。理由を教えてくれますか? –

+0

@VivekWarde:運用デバイス上の内部ストレージを参照することはできません。 – CommonsWare

+0

アセットフォルダ以外の場所にあるsqliteデータベースはどこにありますか? –

6

デバッグモードでは、adbシェルを使用して、ディレクトリの内容を参照できます。シェルでsqlite3 /data/data/dev.client.android/databases/clientDB.dbと入力してDBを分析することができます。

+0

アプリをデバッグしているのにAndroidスタジオの[端末]タブでこれを入力しようとしましたが、コマンドを認識できませんでした。私のコンピュータ上のアプリケーションのディレクトリは、コンソール内のパスでした。これはどこに入力する必要がありますか? –

33

ContextWrapper(http://developer.android.com/reference/android/content/ContextWrapper.html)でgetDatabasePathを試してみてください。あなたが活動またはアプリケーションクラスの試みをしている場合:

File dbFile = getDatabasePath(MY_DB_NAME); 
Log.i(dbFile.getAbsolutePath()); 

ちょうどデータはSDカードまたはデバイスに移動されていない保証はありませんように、その /data/data/my.package.name/databases/では悪いと仮定/ OSは、ちょうど上で決定しました別のデータディレクトリ。