Veritabanı yedeği alıp mail olarak gönderme

Merhaba arkadaşlar,

uzun bir aradan sonra yeniden kodların arasında buluşuyoruz. Eğer veri tabanlı uygulamlarda çalışıyor isek database’imiz bizim için en önemli parçadır, ki bazen içerdiği veriler kullanıcı için o kadar kıymetli oluyor ki… Bir süredir aklımdaydı böyle bişey çlaışma yapmak. Bir çok yazılımcı arkadaşın işine yarıcağını düşünüyorum.

aşağıdaki kodlar ile, program “*.bak” uzantılı sql yedeği alıp “gmail” üzerinden yedeği gönderiyor. Bunu tam olarak uygulamanın içerisine nasıl gömeceğini merak eden kullanıclar için ise örnek uygulamanın konu linki;

Güzellik Salonu Müşteri Takip Uygulaması

 

Uygulama içerisinde İhtiyacımız olan;

  • 2 button
  • 1 textbox

Kodlarımız;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Net.Mail;

namespace sql_backup
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string zaman = DateTime.Now.ToString().Replace(":", "-").Replace(" ", "_"); //dosyayı diğer yedeklerden zaman kriteri ile ayıracağız

            SqlConnection myConnection = new SqlConnection("Data Source=.;uid=sa;Initial Catalog=db2m1;Integrated Security=True");
            myConnection.Open();
            string cmdText = "BACKUP DATABASE db2m1 TO DISK = '" + zaman + ".bak'"; //zaman ile yeniden isimlendirdik ve yedeklemeye başladık
            SqlCommand komut = new SqlCommand(cmdText, myConnection);
            komut.ExecuteNonQuery();
            MessageBox.Show("Yedekleme tamamlandı!\n\n" + cmdText.Replace("BACKUP DATABASE db2m1 TO DISK = ", "").Replace("'", ""));
        } //olası bir hata almanız durumunda "try - catch" bloglarını kullanabilirisiniz.

        string cmbKullaniciAdi = "gmail adresiniz";
        string txtSifre = "gmail şifreniz";
        string cmbKime = "yedeğin yollanacağı gmail adresi";
        string txtKonu = "Yedeklenen Veritabanı";
        string txtMesaj = "Mevcut veritabanınız yedeklendi.";
        string cmbKimden = "ad soyad";

        private bool AttachSendMail(string to, string subject, string message, string name)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                System.Net.NetworkCredential cred = new System.Net.NetworkCredential(cmbKullaniciAdi.Trim(), txtSifre.Trim());
                mail.To.Add(to);
                mail.Subject = subject;
                mail.From = new System.Net.Mail.MailAddress(cmbKime, name);
                mail.IsBodyHtml = true;
                mail.Body = message;
                mail.Attachments.Add(new Attachment(textBox1.Text));
                System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
                smtp.UseDefaultCredentials = false;
                smtp.EnableSsl = true;
                smtp.Credentials = cred;
                smtp.Send(mail);
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string zaman = DateTime.Now.ToString().Replace(":", "-").Replace(" ", "_");

            SqlConnection myConnection = new SqlConnection("Data Source=.;uid=sa;Initial Catalog=db2m1;Integrated Security=True");
            myConnection.Open();
            string cmdText = "BACKUP DATABASE db2m1 TO DISK = '" + zaman + ".bak'";
            SqlCommand komut = new SqlCommand(cmdText, myConnection);
            komut.ExecuteNonQuery();
            textBox1.Text = @"C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\" + cmdText.Replace("BACKUP DATABASE db2m1 TO DISK = ", "").Replace("'", "");
            
            AttachSendMail(cmbKime, txtKonu, txtMesaj, cmbKimden);

            MessageBox.Show("Yedekleme tamamlandı!\n\n" + cmdText.Replace("BACKUP DATABASE db2m1 TO DISK = ", "").Replace("'", ""));
        }

        private bool SendMail(string to, string subject, string message, string name)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                System.Net.NetworkCredential cred = new System.Net.NetworkCredential(cmbKullaniciAdi.Trim(), txtSifre.Trim());
                mail.To.Add(to);
                mail.Subject = subject;
                mail.From = new System.Net.Mail.MailAddress(cmbKime, name);
                mail.IsBodyHtml = true;
                mail.Body = message;
                System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
                smtp.UseDefaultCredentials = false;
                smtp.EnableSsl = true;
                smtp.Credentials = cred;
                smtp.Send(mail);
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }
    }
}

sorularınız ile aklınıza takılan konuları veya önerilerniz ile kodları daha iyi hale getirebilirsiniz. Lütfen bize aşağıdan yorumlarınızı iletmeyi ve “Kodlama Örnekleri” sekmesi altından diğer paylaşımlarımıza göz atmayı unutmayın. iyi çalışmalar.

Hakan BAYRAM

Gönlünü Yazılıma kaptırmış biri, Hobi olarak başladığı Kodlamaya profesyonellik katarak ilerleyen Hakan BAYRAM, 1986 izmir doğumlu.

You may also like...

%d bloggers like this: