好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#实现的SQL备份与还原功能示例

本文实例讲述了C#实现的SQL备份与还原功能。分享给大家供大家参考,具体如下:

?

//记得加 folderBrowserDialog1 openFileDialog1 控件

using System.Data.SqlClient; //连接数据库 公共变量

namespace WindowsApplication1.GoodMenhod

{

class getSqlConnection

{

string sql = "Data Source=win7-pc;database=Kc;uid=sa;pwd=sa" ;

SqlConnection conn;

public SqlConnection GetCon()

{

conn = new SqlConnection(sql);

conn.Open();

return conn;

}

}

}

using System.Data.SqlClient;

using WindowsApplication1.GoodMenhod; //引用命名空间

namespace WindowsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click( object sender, EventArgs e) //打开 备份路径

{

if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)

{

txtPath.Text = folderBrowserDialog1.SelectedPath.ToString();

}

}

private void button2_Click( object sender, EventArgs e) //备份名称 保存

{

try

{

if (txtPath.Text != "" )

{

getSqlConnection geCon = new getSqlConnection();

SqlConnection con = geCon.GetCon();

string strBacl = "backup database Kc to disk='" + txtPath.Text.Trim() + "\\" + txtName.Text.Trim() + ".bak'" ;

SqlCommand Cmd = new SqlCommand(strBacl, con);

if (Cmd.ExecuteNonQuery() != 0)

{

MessageBox.Show( "数据备份成功!" , "提示框" , MessageBoxButtons.OK, MessageBoxIcon.Information);

this .Close();

}

else

{

MessageBox.Show( "数据备份失败!" , "提示框" , MessageBoxButtons.OK, MessageBoxIcon.Information);

}

}

else

{

MessageBox.Show( "请填写备份的正确位置及文件名!" , "提示框" , MessageBoxButtons.OK, MessageBoxIcon.Information);

} // end

}

catch (Exception ee)

{

MessageBox.Show(ee.Message.ToString());

}

}

}

}

private void button3_Click( object sender, EventArgs e) //打开 将要还原的文件

{

openFileDialog1.FilterIndex = 0;

openFileDialog1.FileName = "" ;

openFileDialog1.Filter = "txt files (*.bak)|*.bak|All files (*.*)|*.*" ;

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

textPaht.Text = openFileDialog1.FileName.ToString();

}

}

private void button4_Click( object sender, EventArgs e) //还原

{

if (textPaht.Text != "" )

{

getSqlConnection geCon = new getSqlConnection();

SqlConnection con = geCon.GetCon();

if (con.State == ConnectionState.Open)

{

con.Close();

}

//连接的数据库是master,所以要初始化新的连接字符串

string DateStr = "Data Source=win7-pc;Database=master;User id=sa;PWD=sa" ;

SqlConnection conn = new SqlConnection(DateStr);

conn.Open();

//-------------------杀掉所有连接 db_CSManage 数据库的进程--------------

// string sql = " SELECT spid FROM master..sysprocesses WHERE dbid=db_id('" + strDBName + "')";

string strSQL = "select spid from master..sysprocesses where dbid=db_id( 'Kc') " ; //读取连接当前数据库的进程

SqlDataAdapter Da = new SqlDataAdapter(strSQL, conn);

DataTable spidTable = new DataTable();

Da.Fill(spidTable);

SqlCommand Cmd = new SqlCommand();

Cmd.CommandType = CommandType.Text;

Cmd.Connection = conn;

for ( int iRow = 0; iRow <= spidTable.Rows.Count - 1; iRow++)

{

Cmd.CommandText = "kill " + spidTable.Rows[iRow][0].ToString(); //强行关闭用户进程

Cmd.ExecuteNonQuery();

}

conn.Close();

conn.Dispose();

//--------------------------------------------------------------------

SqlConnection sqlcon = new SqlConnection(DateStr);

sqlcon.Open();

SqlCommand sqlCmd = new SqlCommand( "backup database Kc to disk='" + textPaht.Text.Trim() + "' restore database Kc from disk='" + textPaht.Text.Trim() + "'" , sqlcon);

sqlCmd.ExecuteNonQuery();

sqlCmd.Dispose();

sqlcon.Close();

sqlcon.Dispose();

MessageBox.Show( "数据还原成功!" , "提示" , MessageBoxButtons.OK, MessageBoxIcon.Information);

MessageBox.Show( "为了必免数据丢失,在数据库还原后将关闭整个系统。" );

Application.Exit();

}

else

{

MessageBox.Show( "请选择备份文件!" , "提示" , MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

}

希望本文所述对大家C#程序设计有所帮助。

dy("nrwz");

查看更多关于C#实现的SQL备份与还原功能示例的详细内容...

  阅读:48次