PDA

View Full Version : Backup همراه با progressbar



amirreza_.net
جمعه 06 دی 1392, 20:18 عصر
سلام دوستان
چجوری می تونم از دیتابیس SQl توی برنامم بک آپ وردارم که درصد پیشرفت رو نشون بده(ProgressBar)؟
میشه راهنمایی کنید؟
ممنون

davidrobert
جمعه 06 دی 1392, 20:40 عصر
بفرمایید این کد بکاپ گیری به همراه ProgressBar که درصد انجام پردازش رو نشان میده چقدر مانده تا بکاپ گرفته بشه.
public void Backup_DataBase()
{

DialogResult dr;
dr = PersianMessageBox.Show("آیا مایلید نسخه پشتیبان از اطلاعات خود تهیه فرمایید", "تهیه نسخه پشتیبان", PersianMessageBox.Buttons.YesNo, PersianMessageBox.Icon.Question);
if (dr == DialogResult.Yes)
{
try
{
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
string date = pc.GetYear(DateTime.Now) + "-" + pc.GetMonth(DateTime.Now) + "-" +
pc.GetDayOfMonth(DateTime.Now);
System.Globalization.PersianCalendar pcc = new System.Globalization.PersianCalendar();
DateTime tm = new DateTime();
tm = DateTime.Now;
string timenow = pcc.GetHour(tm).ToString() + "_" + pcc.GetMinute(tm).ToString() + "_" +
pcc.GetSecond(tm).ToString();
SaveFileDialog savefiledialog = new SaveFileDialog();
savefiledialog.AddExtension = true;
savefiledialog.CheckFileExists = false;
savefiledialog.OverwritePrompt = true;
savefiledialog.FileName = "Backup_FileDataBase" + date + " " + timenow;
savefiledialog.Filter = @"(*.bak) پشتیبان گیری|*.bak";
savefiledialog.Title = "پشتیبان گیری";
savefiledialog.DefaultExt = "Bak";
savefiledialog.RestoreDirectory = true;
if (savefiledialog.ShowDialog() == DialogResult.OK)
{
try
{

SqlCommand cmd = new SqlCommand();
cmd.Connection =
new SqlConnection(
@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DBCASSABNS.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
cmd.Connection.Open();
string dbname = cmd.Connection.Database;
cmd.Connection.Close();
SqlConnection.ClearAllPools();
string query = "BACKUP DATABASE [" + dbname + "] TO DISK ='" + savefiledialog.FileName +
"'";
cmd.Connection =
new SqlConnection(
"Data Source=.\\sqlexpress;Integrated Security=True;Connect Timeout=30;User Instance=True");
cmd.Connection.Open();
cmd.CommandText = query;
progressBar1.Visible = true;
progressBar1.PerformStep();
progressBar1.Value = 0;
progressBar1.Visible = false;
cmd.ExecuteNonQuery();
cmd.Connection.Close();
PersianMessageBox.Show("نسخه پشتيبان به طور كامل ايجاد شد.", "پشتیبان گیری",
PersianMessageBox.Buttons.OK, PersianMessageBox.Icon.None);
}
catch (Exception ex)
{
if (!ShowFriendMeesage)
PersianMessageBox.Show(ex.Message);
else
PersianMessageBox.Show("اشکال در پشتیان گیری /خطا 102", "خطا",
PersianMessageBox.Buttons.OK, PersianMessageBox.Icon.Error);
}
}
}
catch
{

}
}

amirreza_.net
جمعه 06 دی 1392, 21:53 عصر
ممنون خیلی کمکم کردین :لبخندساده:

NasimBamdad
جمعه 06 دی 1392, 22:46 عصر
از کد شما استفاده کردم ، اما پروگرس بار نمایش داده نشد

یعنی چون دیتابیس من سبکه اصلا نشون نداد ؟

davidrobert
جمعه 06 دی 1392, 23:42 عصر
شرمنده دوست عزیز یک سوتی کوچک دادم تو سروس اصلاح شد.
DialogResult dr;
dr = PersianMessageBox.Show("آیا مایلید نسخه پشتیبان از اطلاعات خود تهیه فرمایید", "تهیه نسخه پشتیبان",
PersianMessageBox.Buttons.YesNo, PersianMessageBox.Icon.Question);
if (dr == DialogResult.Yes)
{
try
{
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
string date = pc.GetYear(DateTime.Now) + "-" + pc.GetMonth(DateTime.Now) + "-" +
pc.GetDayOfMonth(DateTime.Now);
System.Globalization.PersianCalendar pcc = new System.Globalization.PersianCalendar();
DateTime tm = new DateTime();
tm = DateTime.Now;
string timenow = pcc.GetHour(tm).ToString() + "_" + pcc.GetMinute(tm).ToString() + "_" +
pcc.GetSecond(tm).ToString();
SaveFileDialog savefiledialog = new SaveFileDialog();
savefiledialog.AddExtension = true;
savefiledialog.CheckFileExists = false;
savefiledialog.OverwritePrompt = true;
savefiledialog.FileName = "Backup_FileDataBase" + date + " " + timenow;
savefiledialog.Filter = @"(*.bak) پشتیبان گیری|*.bak";
savefiledialog.Title = "پشتیبان گیری";
savefiledialog.DefaultExt = "Bak";
savefiledialog.RestoreDirectory = true;

if (savefiledialog.ShowDialog() == DialogResult.OK)
{
try
{

SqlCommand cmd = new SqlCommand();
cmd.Connection =
new SqlConnection(
@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DBCASSABNS.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
cmd.Connection.Open();
string dbname = cmd.Connection.Database;
cmd.Connection.Close();
SqlConnection.ClearAllPools();
string query = "BACKUP DATABASE [" + dbname + "] TO DISK ='" + savefiledialog.FileName +
"'";
cmd.Connection =
new SqlConnection(
"Data Source=.\\sqlexpress;Integrated Security=True;Connect Timeout=30;User Instance=True");
cmd.Connection.Open();

cmd.CommandText = query;
cmd.ExecuteNonQuery();
cmd.Connection.Close();
//progressBar1.Visible = true;
progressBar1.PerformStep();
progressBar1.Value = 100;
//progressBar1.Visible = false;
PersianMessageBox.Show("نسخه پشتيبان به طور كامل ايجاد شد.", "پشتیبان گیری",
PersianMessageBox.Buttons.OK, PersianMessageBox.Icon.None);
}
catch (Exception ex)
{
if (!ShowFriendMessageFrmRestore)
PersianMessageBox.Show(ex.Message);
else
PersianMessageBox.Show("اشکال در پشتیان گیری /خطا 102", "خطا",
PersianMessageBox.Buttons.OK, PersianMessageBox.Icon.Error);
}
}
}
catch
{

}
این سورس تست شده و 100 درصد جواب میده. فقط به سلیقه خودتون ربط داره
مخفی وقتی بارگزاری کرد پور بشه یا بکاپ بگیره progressbar که وقتی پور شد مخفی بشه
progressbar

fakhravari
شنبه 07 دی 1392, 13:55 عصر
[QUOTE=davidrobert;1940334]بفرمایید این کد بکاپ گیری به همراه ProgressBar که درصد انجام پردازش رو نشان میده چقدر مانده تا بکاپ گرفته بشه.

progressbar کو :بامزه: