sky_man847
جمعه 08 اسفند 1393, 14:28 عصر
با سلام دوستان من کد بکاپ و ریستوری رو نوشتم قسمت بکاپ بخوبی کار میکنه ولی قسمت ریستور دکمه ریستور رو میزنم عملیات کامل نمیشه ممنون میشم کمکی کنین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.IO;
namespace MyAzmoon
{
public partial class FrmBackupandRestor : Form
{
SqlConnection con = new SqlConnection("server=.\\AYHAN;DataBase=Zamin;Integrated Security=True;Asynchronous Processing=true");
SqlCommand cmd;
bool flag = false;
public FrmBackupandRestor()
{
InitializeComponent();
}
private void إBtnSelectPath_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (folderBrowserDialog1.SelectedPath.Substring(0, 1) == "C")
MessageBox.Show("بهتر است مسیری غیر از درایو/n" + "C/n" + "را برای فایل پشتیبان انتخاب نمایید");
if (folderBrowserDialog1.SelectedPath.Length > 350)
MessageBox.Show("مسیری که انتخال کردید بیش از 350 کارکتر میباشد");
else
{
TxtSelectPath.Text = folderBrowserDialog1.SelectedPath;
}
}
}
private void BtnBackup_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(TxtSelectPath.Text))
errorProvider1.SetError(TxtSelectPath, "جای خالی را پر کنید");
else if (string.IsNullOrWhiteSpace(TxtBackupName.Text))
errorProvider1.SetError(TxtBackupName, "وارد کنید");
else if (File.Exists(TxtSelectPath.Text + "\\" + TxtBackupName.Text.Trim() + ".bak"))
MessageBox.Show("در مسیر انتخاب شده قبلا یک فایل با همین نام ذخیره شده است");
else
{
flag = true;
GrpSelct.Enabled = false;
BtnBackup.Enabled = false;
cmd = new SqlCommand("MyBackup", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@path", TxtSelectPath.Text + "\\" + TxtBackupName.Text.Trim() + ".bak");
con.Open();
AsyncCallback CallBackDeletgate = HandleCallBack;
cmd.BeginExecuteNonQuery(CallBackDeletgate, cmd);
}
}
//
private void HandleCallBack(IAsyncResult result)
{
try
{
cmd = (SqlCommand)result.AsyncState;
cmd.EndExecuteNonQuery(result);
MessageBox.Show("پشتیبانگیری انجام شد");
}
catch (Exception ex)
{
MessageBox.Show("متوقف شد");
}
con.Close();
flag = false;
this.BeginInvoke((MethodInvoker)delegate()
{
BtnBackup.Enabled = true;
GrpSelct.Enabled = true;
});
}
private void BtnCancel_Click(object sender, EventArgs e)
{
cmd.Cancel();
}
private void RdbBackup_CheckedChanged(object sender, EventArgs e)
{
GrpBackup.Enabled = true;
GrpRestore.Enabled = false;
}
private void Rdbrestore_CheckedChanged(object sender, EventArgs e)
{
GrpBackup.Enabled = false;
GrpRestore.Enabled = true;
}
private void FrmBackupandRestor_FormClosing(object sender, FormClosingEventArgs e)
{
if(RdbBackup.Checked==true) {
if (flag == true)
{
e.Cancel = true;
MessageBox.Show("لطفا ابتدا عملیات را متوقف کنید سپس اقدام به خروج نمایید");
}
}
else if(Rdbrestore.Checked==true)
{
if(flag==true)
e.Cancel = false;
MessageBox.Show(".شما در حال بازیابی اطلاعات میباشداکیدا توصیه میکنیم تا پایان عملیات پروژه را نبندین");
}}
private void BtnSelectBackup_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "(*.bak)|*.bak";
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
TxtSelectBackup.Text = openFileDialog1.FileName;
}
private void BtnRestore_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(TxtSelectBackup.Text))
errorProvider1.SetError(TxtSelectBackup, "فایل پشتیبان انتخاب کنید");
else
{
flag = true;
GrpSelct.Enabled = false;
BtnRestore.Enabled = false;
if (backgroundWorker1.IsBusy)
{
backgroundWorker1.RunWorkerAsync();
}
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
cmd = new SqlCommand("MyRestore", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@pathfile", TxtSelectBackup.Text.Trim());
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error == null)
{
MessageBox.Show(".عملیات با موفقیت انجام شد. برنامه بعد از این پیغام ریستارت خواهد شد");
Application.Restart();
}
else
{
MessageBox.Show("در بازیابی اطلاعات خطایی رخ داده است");
flag = false;
}
}
}
}
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.IO;
namespace MyAzmoon
{
public partial class FrmBackupandRestor : Form
{
SqlConnection con = new SqlConnection("server=.\\AYHAN;DataBase=Zamin;Integrated Security=True;Asynchronous Processing=true");
SqlCommand cmd;
bool flag = false;
public FrmBackupandRestor()
{
InitializeComponent();
}
private void إBtnSelectPath_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (folderBrowserDialog1.SelectedPath.Substring(0, 1) == "C")
MessageBox.Show("بهتر است مسیری غیر از درایو/n" + "C/n" + "را برای فایل پشتیبان انتخاب نمایید");
if (folderBrowserDialog1.SelectedPath.Length > 350)
MessageBox.Show("مسیری که انتخال کردید بیش از 350 کارکتر میباشد");
else
{
TxtSelectPath.Text = folderBrowserDialog1.SelectedPath;
}
}
}
private void BtnBackup_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(TxtSelectPath.Text))
errorProvider1.SetError(TxtSelectPath, "جای خالی را پر کنید");
else if (string.IsNullOrWhiteSpace(TxtBackupName.Text))
errorProvider1.SetError(TxtBackupName, "وارد کنید");
else if (File.Exists(TxtSelectPath.Text + "\\" + TxtBackupName.Text.Trim() + ".bak"))
MessageBox.Show("در مسیر انتخاب شده قبلا یک فایل با همین نام ذخیره شده است");
else
{
flag = true;
GrpSelct.Enabled = false;
BtnBackup.Enabled = false;
cmd = new SqlCommand("MyBackup", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@path", TxtSelectPath.Text + "\\" + TxtBackupName.Text.Trim() + ".bak");
con.Open();
AsyncCallback CallBackDeletgate = HandleCallBack;
cmd.BeginExecuteNonQuery(CallBackDeletgate, cmd);
}
}
//
private void HandleCallBack(IAsyncResult result)
{
try
{
cmd = (SqlCommand)result.AsyncState;
cmd.EndExecuteNonQuery(result);
MessageBox.Show("پشتیبانگیری انجام شد");
}
catch (Exception ex)
{
MessageBox.Show("متوقف شد");
}
con.Close();
flag = false;
this.BeginInvoke((MethodInvoker)delegate()
{
BtnBackup.Enabled = true;
GrpSelct.Enabled = true;
});
}
private void BtnCancel_Click(object sender, EventArgs e)
{
cmd.Cancel();
}
private void RdbBackup_CheckedChanged(object sender, EventArgs e)
{
GrpBackup.Enabled = true;
GrpRestore.Enabled = false;
}
private void Rdbrestore_CheckedChanged(object sender, EventArgs e)
{
GrpBackup.Enabled = false;
GrpRestore.Enabled = true;
}
private void FrmBackupandRestor_FormClosing(object sender, FormClosingEventArgs e)
{
if(RdbBackup.Checked==true) {
if (flag == true)
{
e.Cancel = true;
MessageBox.Show("لطفا ابتدا عملیات را متوقف کنید سپس اقدام به خروج نمایید");
}
}
else if(Rdbrestore.Checked==true)
{
if(flag==true)
e.Cancel = false;
MessageBox.Show(".شما در حال بازیابی اطلاعات میباشداکیدا توصیه میکنیم تا پایان عملیات پروژه را نبندین");
}}
private void BtnSelectBackup_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "(*.bak)|*.bak";
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
TxtSelectBackup.Text = openFileDialog1.FileName;
}
private void BtnRestore_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(TxtSelectBackup.Text))
errorProvider1.SetError(TxtSelectBackup, "فایل پشتیبان انتخاب کنید");
else
{
flag = true;
GrpSelct.Enabled = false;
BtnRestore.Enabled = false;
if (backgroundWorker1.IsBusy)
{
backgroundWorker1.RunWorkerAsync();
}
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
cmd = new SqlCommand("MyRestore", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@pathfile", TxtSelectBackup.Text.Trim());
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error == null)
{
MessageBox.Show(".عملیات با موفقیت انجام شد. برنامه بعد از این پیغام ریستارت خواهد شد");
Application.Restart();
}
else
{
MessageBox.Show("در بازیابی اطلاعات خطایی رخ داده است");
flag = false;
}
}
}
}