Android Sqllite Veritabanı Yedeği Alma, Yedeği Geri Yükleme ve Yedeği Mail Olarak Gönderme

Yazar: | 28 Haziran 2017

 

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.."));
}

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir