13

Androidでデータベースを作成しましたsqlite。コード内でクエリを実行できますが、ファイルシステム/ SDカードで見つけることができません。

私は他のSOの質問をチェックしましたが、そうではありませんdata/data/package-name...

アプリのデータ エントリが 52kb のスペースを占めていることがわかります。そのため、アプリを再度実行しOnCreateても、DB が既に存在するという意味をトリガーしません。

私の電話はルート化されており、すべての意図と目的で正常に動作するカスタムのジェリービーン ROM を使用しています。

それがどこにある可能性がありますか?

コード c#

public class SqliteHelper : SQLiteOpenHelper
{
    private const string DATABASE_NAME = "Book";
    private const int DATABASE_VERSION = 1;

public SqliteHelper(Context ctx)
    : base(ctx, DATABASE_NAME, null, DATABASE_VERSION)
{ }

// Method is called during creation of the database
public override void OnCreate(SQLiteDatabase db)
{
    db.BeginTransaction();
    try
    {
        db.ExecSQL("CREATE TABLE Chapters (Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL);");

        ContentValues cv = new ContentValues();
        cv.Put("Name", "1. Family");
        db.Insert("Chapters", null, cv);
        cv.Put("Name", "2. Shopping");
        db.Insert("Chapters", null, cv);
        cv.Put("Name", "3. Work");
        db.Insert("Chapters", null, cv);

        db.SetTransactionSuccessful();
    }
    finally
    {
        db.EndTransaction();
    }

    //if(db.IsOpen())
    //  db.Close();
}
4

6 に答える 6

25

私のルート化された電話では、次の場所にあります:/data/data/<your_app_package_name>/databases/<database_name>

例 /data/data/com.my.package/databases/mydb

于 2013-09-19T22:20:35.570 に答える
7

そこにあります。Android デバイスでアクセスできない唯一の理由は、そのフォルダーが非公開であり、従来の方法を使用して表示できないためです。OS はそのフォルダーとそのフォルダー (およびデータベースなどのコンテンツ) を保護し、その特定のユーザーのみが使用できます。応用。

見たい場合は、エミュレーターを実行し、そこでアプリケーションを実行し、DDMS ビューに移動して to を実行する/data/data/packageName/databasesと、そこに表示されます。DDMS にアクセスできない場合は、次の ADB シェル コマンドを使用します。$ adb pull /data/data/packageName/databases/yourDBFilename.db

于 2013-09-20T00:19:36.017 に答える
4

電話Context.getDatabasePathすれば確実な答えが返ってくる

于 2013-09-19T22:39:28.130 に答える