0

データベースのバックアップを取りたいという点で、アプリケーションでSQLデータベースを使用しています。次の疑問があります。

1.エミュレーターでアプリケーションを実行しています。外部ストレージを接続する必要があるかどうかを確認するために、システムにない場合はどうすれば確認できますか。2.アプリケーションで次のコードを使用しています.sdcard.writeオプションがfalseを示しています.これは何が問題なのですか.

以下は私のコードです:

  try {
                    File sd = Environment.getExternalStorageDirectory();
                    File data = Environment.getDataDirectory();

                    java.lang.System.out.println("data="+sd.getAbsolutePath());
 java.lang.System.out.println("data="+sd.canWrite());--->Showing as false

                    if (sd.canWrite()) {
                        String currentDBPath = "\\data\\com.budget\\databases\\budget";
                        String backupDBPath = "budget";
                        File currentDB = new File(data, currentDBPath);
                        File backupDB = new File(sd, backupDBPath);

                        java.lang.System.out.println("backup="+backupDB.getAbsolutePath());

                        if (currentDB.exists()) {
                            FileChannel src = new FileInputStream(currentDB).getChannel();
                            FileChannel dst = new FileOutputStream(backupDB).getChannel();
                            dst.transferFrom(src, 0, src.size());
                            src.close();
                            dst.close();
                        }
                    }
                } catch (Exception e) {
                }
4

3 に答える 3

0

Eclipse を使用している場合は、[ウィンドウ] - [Android Virtual Device Manager] に移動し、使用している AVD を選択して [編集] をクリックし、[ハードウェア] オプションで [新規] を選択してから、[SD カード サポート] を選択します。次に、ストレージ サイズを定義し、[AVD の編集] をクリックして、変更を保存します。sd がマウントされているかどうかを確認するには、次を使用します。

if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
    //code for sd mounted
}else{
    //code for sd not mounted
}

マニフェストで権限を設定しているかどうかを確認します。

<manifest ...
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
于 2013-07-08T20:08:39.413 に答える
0

.db上記の抜粋には、ファイル拡張子 ( ) がありません。

currentDBPath = "\\\data\\\com.budget\\\databases\\\budget.db";
于 2012-05-25T05:01:02.943 に答える
0

Android のデータ バックアップドキュメント。Android アプリケーションにデータベースがあり、ユーザーが必要に応じてデータベースをバックアップおよび復元できるようにする場合は、データベース ファイルをいじる必要があります。

以下は、DbExportImport というクラスです。正しい値を設定したら、あとはアプリケーションから exportDb()、importDb()、または restoreDb() を呼び出して、必要な操作を実行するだけです。

これは、アプリケーションが新しくインストールされ、データベースが失われるため、アプリケーション署名用のパッケージ名またはキーを変更するときの一時的な手段としても役立ちます。(詳細).

ただし、次のことが必要な場合は、BackupAgent を直接拡張することをお勧めします。 * データベース内のデータをバックアップする。ユーザーがアプリケーションを再インストールしたときに復元する SQLite データベースがある場合は、バックアップ操作中に適切なデータを読み取るカスタム BackupAgent を構築する必要があります。その後、テーブルを作成し、復元操作中にデータを挿入します(もっと)。

SDカードからバックアップして、SQLiteデータベースをSDカードに復元することもできます

あなたの問題と同じように、別の解決策があります。

于 2012-05-25T05:13:56.373 に答える