Bugün sizlere C# ile veritabanı yedekleme ve yedeği tekrar yükleme işlemini nasıl yapıyorsunuz onu açıklayacağım (Backup and Restore).

Bugün ise C# ile veritabanımızı yedeklerken ve yedekten geri yüklerken, kullanıcıya dizin göstermesini sağlayacağız. Bu yedekleme ve geri yükleme işlemini, Access veritabanında yapacağız. İleri ki yazılarımda MSSQL ile bu işlemi nasıl yapacağınızı açıklayacağım. Onun için merak edenler takipte kalsın.

Öncellikle bir Access veritabanı oluşturunuz. Ardından yeni bir proje oluşturunuz. Windows Form’a 2 adet buton ekleyiniz. Bu butonların isimleri ‘Yedek Al’ ve ‘Yedekten Yükle’ olsun.

VERİTABANI YEDEKLEME İŞLEMİ (BACKUP):Kod ekranına geçiniz.

using System.Data.OleDb;
using System.IO;

Yukarıdaki 2 kütüphaneyi ekleyiniz.

Sonra veritabanı bağlantısını kurunuz.

public Form4() { InitializeComponent(); }
OleDbConnection bag = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=EvrakData.accdb");

Aşağıdaki kodlar ile veritabanı dosyasını oluşturunuz. Bu path işlemidir. Yani kullanıcıya kaydetme işlemi için ek pencere açar.

protected void Backup(string path)
{
    // Yedekleme Dosyası Oluşturma
    string src = Application.StartupPath + @"EvrakData.accdb"; string dst = path; System.IO.File.Copy(src, dst, true);
}

Ardından ‘Yedek Al’ butonunun klik olayına geçiniz ve şu kodları yazınız.

private void simpleButton9_Click(object sender, EventArgs e)
{
    try
    {
        SaveFileDialog SaveFD1 = new SaveFileDialog();
        string FileName = "";
        SaveFD1.InitialDirectory = "D:"; SaveFD1.FileName = "";
        SaveFD1.Title = "Yedek Alma ";
        SaveFD1.DefaultExt = "accdb";
        SaveFD1.Filter = "Ms-Access Files (*.accdb)|*.accdb|All Files|*.*";
        SaveFD1.FilterIndex = 1;
        SaveFD1.RestoreDirectory = true;
        if (SaveFD1.ShowDialog() == DialogResult.OK)
        {
            FileName = SaveFD1.FileName;
            Backup(FileName);
            MessageBox.Show("Yedekleme Başarılı !""Yedekleme Durumu", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Yedekleme yapılırken hata oluştu " + ex, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

Kodlarda gördüğünüz gibi hata yakalamak için try-catch kullandık. InitialDirectory ile D diskini açtık. FileName kısmını, yani dosyas ismini belirlemesini kullanıcıya bıraktık. Ek pencerenin başlığını(title), Yedek Alma olarak belirledik. DefaultExt ile dosya türünü belirledik. Filter ile dosyanın Access ve uzantısı .accdb olduğunu söyledik. Burası ek penceredeki, sağ altta bulunan dosya türünün görüntülendiği yerdir. Varsayılan olarak .accdb görünecektir. Kullanıcı isterse ‘Tüm Dosyalar’ seçeneğini tıklayarak, ek pencerede bütün dosyaları görüntüleyebilir. if sorgusu ile kullanıcı dosya ismini yazıp Enter tuşuna basarsa işlem tamamlanacaktır.

Bu şekilde yedekleme işlemini tamamlamış olduk. Şimdi sırada yedekten geri yükleme işlemi var.

VERİTABANI GERİ YÜKLEME İŞLEMİ (RESTORE):

‘Yedekten Yükle’ butonunun klik olayına geçiniz. Aşağıdaki kodları yazınız.

private void simpleButton8_Click(object sender, EventArgs e)
{
    try
    {
        OpenFileDialog SaveFD12 = new OpenFileDialog();
        string FileName = "";
        SaveFD12.InitialDirectory = "C:";
        SaveFD12.FileName = "";
        SaveFD12.Title = "Geri yüklemek istediğiniz veritabanını seçiniz";
        SaveFD12.DefaultExt = "accdb";
        SaveFD12.Filter = "Ms-Access Files (*.accdb)|*.accdb|All Files|*.*";
        SaveFD12.FilterIndex = 1;
        SaveFD12.RestoreDirectory = true;
        if (SaveFD12.ShowDialog() == DialogResult.OK)
        {
            FileName = SaveFD12.FileName;
            string src = FileName;
            string dst = Application.StartupPath + @"EvrakData.accdb";
            System.IO.File.Copy(src, dst, true);
            MessageBox.Show("Geri Yükleme Başarılı !""Geri Yükleme Durumu", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Geri Yüklemede Hata Oluştu!" + ex, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

Gördüğünüz gibi yedekten yükleme işlemi ile aynı şekilde kodlarımızı yazdık. Buradaki fark ise if sorgusunda veritabanı ismini orjinal EvrakData yapması ve doğru şekilde programın dizinine kaydetmesidir. Diğer kısımlar yukarıda anlattığım şekildedir.

Aklınıza takılan soru varsa bir yorum bırakabilirsiniz.