1

私のアプリケーションでは、データベースが1つあり、そのデータベースを表示したいので、次の手順に従いました。

data> data> your-package-name>(この後、2つのフォルダーが表示され、データベースのオプションが表示されません)データベース>your-database-file。

しかし、データベースファイルが表示されません。パッケージ内に2つのフォルダが表示されます。誰か助けてください。

4

2 に答える 2

1

次に、このパスをたどると、拡張子のない2つのファイルが表示されます。ただし、DBの内容は表示されません。

見たい場合は、他のSQLite Manager(Firefoxアドオンなど)をプッシュしてからインポートする必要があります。あなたがそれを見ることができないならば、多分あなたはデータベースを作成することができないでしょう。


更新:エミュレータでDBを挿入、削除、または取得するには、Android DDMS(Eclipsヘルプメニュー->ソフトウェアのインストールで)インストールし、プッシュ削除プルのアイコンを順番に選択する必要があります。

ここに画像の説明を入力してください

于 2012-07-04T04:25:15.013 に答える
1

電話を root 化していない限り、データ ディレクトリ内のデバイス上のファイルにアクセスすることはできません (これはセキュリティ上の予防措置です)。

いくつかの選択肢があります:

1) エミュレーターでアプリを実行し、DDMS を使用してそこにデータベース フォームをプルします。

2) 電話をルート化する

3) アプリの外部にアクセスできる場所 (SD カードなど) にデータベースをコピーするメソッドをアプリに追加します。

SD カードにコピーする簡単なコード:

public void backup() {
    try {
        File sdcard = Environment.getExternalStorageDirectory();
        File outputFile = new File(sdcard,
                "yourdb.sqlite");

        if (!outputFile.exists()) 
             outputFile.createNewFile(); 

        File data = Environment.getDataDirectory();
        File inputFile = new File(data,
                "data/your.package.name/databases/yourdb.sqlite");
        InputStream input = new FileInputStream(inputFile);
        OutputStream output = new FileOutputStream(outputFile);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = input.read(buffer)) > 0) {
            output.write(buffer, 0, length);
        }
        output.flush();
        output.close();
        input.close();
    } catch (IOException e) {
        e.printStackTrace();
        throw new Error("Copying Failed");
    }
}
于 2012-07-04T04:32:56.207 に答える