Androidde Sqllite kullanıyorsanız yedek alma ve alınan yedeği geri yükleme ihtiyacınız doğabilir. Aşağıdaki fonksiyonları kullanarak Android sqllite veritabanı yedeği alabilirsiniz. Öncelikle Manifest dosyanıza aşağıdaki izinleri ekleyin.
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>
<uses-permission android:name=”android.permission.READ_EXTERNAL_STORAGE”/>
Şimdi aşağıdaki fonksiyonları kullanabilirsiniz. Paket_Adi ve Veritabani_Adi yazan yerlere kendi veritabanınıza ait bilgileri yazmayı unutmayın.
Android Sqllite Veritabanı Yedeği Alma (Backup)
public static Boolean YedekAl(Context context, String yedekismi){ try { File sd = context.getExternalCacheDir(); File data = Environment.getDataDirectory(); if (sd.canWrite()) { String currentDBPath = "//data/Paket_Adi/databases/Veritabani_Adi"; File currentDB = new File(data, currentDBPath); File backupDB = new File(sd, yedekismi); 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(); Toast.makeText(context, "SD Karta Yedek Alındı", Toast.LENGTH_LONG).show(); return true; } else{ Toast.makeText(context, "Veritabanı Bulunamadı", Toast.LENGTH_LONG).show(); return false; } } else{ Toast.makeText(context, "Etkin bir harici kart bulunamadı", Toast.LENGTH_LONG).show(); return false; } } catch (Exception e) { Toast.makeText(context,"Hata Oluştu: " + e.getMessage(), Toast.LENGTH_LONG).show(); return false; } }
Android Sqllite Veritabanı Yedeği ‘ni Geri Yükleme (Restore)
public static Boolean YedektenGeriYukle(Context context, String yedekismi) { try { File sd = context.getExternalCacheDir(); File data = Environment.getDataDirectory(); if (sd.canWrite()) { String currentDBPath = "//data/Paket_Adi/databases/Veritabani_Adi"; File currentDB = new File(data, currentDBPath); File backupDB = new File(sd, yedekismi); if (currentDB.exists()) { FileChannel src = new FileInputStream(backupDB).getChannel(); FileChannel dst = new FileOutputStream(currentDB).getChannel(); dst.transferFrom(src, 0, src.size()); src.close(); dst.close(); Toast.makeText(context, "Veritabanı başarıyla geri yüklendi.", Toast.LENGTH_LONG).show(); return true; } else{ Toast.makeText(context, "Veritabanı Bulunamadı", Toast.LENGTH_LONG).show(); return false; } } else{ Toast.makeText(context, "Etkin bir harici kart bulunamadı", Toast.LENGTH_LONG).show(); return false; } } catch (Exception e) { Toast.makeText(context,"Hata Oluştu: " + e.getMessage(), Toast.LENGTH_LONG).show(); return false; } }
Android Sqllite Veritabanı Yedeği Al ve Mail At
public static Boolean YedekAlVeMailAt(){ String yedekAdi = "Yedek.db"; YedekAl(YedekActivity.this, yedekAdi); Intent i = new Intent(Intent.ACTION_SEND); i.putExtra(Intent.EXTRA_EMAIL, new String[] {"yunuskaygun@gmail.com"}); i.putExtra(Intent.EXTRA_SUBJECT, yedekAdi); i.putExtra(Intent.EXTRA_TEXT, "Veritabanı Yedeği: " + yedekAdi); i.setType("application/octet-stream"); File root = Environment.getExternalStorageDirectory(); File file = new File(root, yedekAdi); if (file.exists() || file.canRead()) { Uri uri = Uri.fromFile(file); i.putExtra(Intent.EXTRA_STREAM, uri); } startActivity(Intent.createChooser(i, "Email Gönder..")); }