0

我在我的应用程序中使用 Sql 数据库,因为我想备份数据库。我有以下疑问:

1.我在模拟器中运行应用程序,检查是否需要插入一些外部存储来检查,如果不是在我的系统中,我该如何检查。2.我在我的应用程序中使用以下代码,在那个 sdcard.write 选项显示为假,这有什么问题。

以下是我的代码:

  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

.db上面的摘录中缺少文件扩展名 ( ):

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

android中的数据备份文档。如果您的 Android 应用程序有一个数据库,并且您希望您的用户能够备份数据库并在他们认为合适的时候恢复它,那么您将需要处理数据库文件。

下面是一个名为 DbExportImport 的类。使用正确的值设置它后,您需要做的就是从应用程序调用 exportDb()、importDb() 或 restoreDb() 来执行必要的操作。

这在更改包名称或应用程序签名密钥时也可用作临时措施,因为您的应用程序将是新安装的,您将丢失数据库。(更多)。

但是,如果需要,您可能希望直接扩展 BackupAgent: * 备份数据库中的数据。如果您有一个 SQLite 数据库要在用户重新安装您的应用程序时恢复,您需要构建一个自定义 BackupAgent,它在备份操作期间读取适当的数据,然后创建您的表并在恢复操作期间插入数据(更多)。

现在您还可以从 sdcard备份备份并将 SQLite 数据库恢复到 sdcard

这是与您的问题一样的另一种解决方案。

于 2012-05-25T05:13:56.373 回答
0

如果您使用的是 Eclipse,请转到 Window - Android Virtual Device Manager,选择您正在使用的 AVD 并单击 Edit,在 Hardware 选项中选择 New,然后选择 SD Card Support。然后只需定义存储大小并单击编辑 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 回答