2012-05-25 3 views
0

Я использую базу данных Sql в моем appliaction, в том, что я хочу взять резервную копию database.I имеет следующие сомнения:в андроиде

1.I бег приложения в эмуляторе, для проверки того, я должен подключить внешнее хранилище, чтобы проверить, если не в моей системе, как я могу проверить. 2. Я использую следующий код в своем приложении, в котором параметр sdcard.write показывает false, что неправильно в этом.

Follwing мой код:

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) { 
       } 

ответ

0

Расширение файла (.db) отсутствует в отрывке выше:

currentDBPath = "\\\data\\\com.budget\\\databases\\\budget.db"; 
+0

Спасибо Харальд .. но в моем случае сам if (sd.canWrite()) -> отображается как false, поэтому он не входит в этот цикл if. – subbu

0

Резервное копирование данных Documentation в андроида. Если ваше приложение Android имеет базу данных и вы хотите, чтобы ваши пользователи могли делать резервную копию базы данных и восстанавливать ее по своему усмотрению, вам нужно будет работать с файлами базы данных.

Ниже приведен класс DbExportImport. После того, как вы настроите правильные значения, все, что вам нужно сделать, это вызвать exportDb(), importDb() или restoreDb() из вашего приложения для выполнения необходимых операций.

Это также полезно в качестве временной меры при изменении имени пакета или ключа для подписания приложения, так как ваше приложение будет установлено, и вы потеряете свою базу данных (More).

Однако, возможно, вы захотите расширить BackupAgent напрямую, если вам необходимо: * Резервное копирование данных в базе данных. Если у вас есть база данных SQLite, которую вы хотите восстановить, когда пользователь переустанавливает ваше приложение, вам необходимо создать собственный BackupAgent, который будет считывать соответствующие данные во время операции резервного копирования, затем создать таблицу и вставить данные во время операции восстановления (More).

Теперь ваш может также резервное копирование из SDCard Backup and restore SQLite database to sdcard

Вот еще одно решение так же, как ваш problem.

+0

спасибо Google_Android_Lovers..Как я могу узнать, есть ли SD-карта или нет. Теперь я запускаю приложение в эмуляторе, так как я могу проверить этот пакет базы данных. Если мне нужно подключить внешнюю память, чтобы проверить. Также в моем case Состояние внешнего хранилища отображается как «удалено». – subbu

0

Если вы используете Eclipse, зайдите в Window - Android Virtual Device Manager, выберите AVD, который вы используете, и нажмите «Изменить», в разделе «Параметры оборудования» выберите «Создать», а затем выберите «Поддержка SD-карт». Затем просто определите размер хранилища и нажмите «Редактировать AVD», чтобы сохранить изменения. Чтобы проверить сд установлен использование:

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> 
Смежные вопросы