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

 

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.