4

アプリケーションに SQLite データベースがあります。dataエクスプローラーでデータベースが作成されているかどうかを確認すると、フォルダー内にデータベース ファイルがありません。adb shellコマンドを使用しても表示されませんでした。これは、データベースがまだ作成されていないということですか? これを解決する方法について何か提案はありますか?

4

1 に答える 1

7

実際のデバイスを使用している場合は、電話をルート化しない限り、外部からデバイスを表示したりアクセスしたりすることはできません。

エミュレーターを使用している場合、DDMSビューを使用すると、エミュレーターに移動してそこからプルできます。

または、DBの作成で問題が発生する可能性があります。あなたのコードを見なければ、私たちはわかりません。

編集

実際のデバイスからファイルを取得する場合は、データディレクトリからアクセスできる場所(SDカードなど)にファイルをコピーするメソッドを実装する必要があります。これはトリックを行います:

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

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

        File data = Environment.getDataDirectory();
        File inputFile = new File(data, "data/your.package.name/databases/yourDB");
        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-06-22T04:26:06.690 に答える