这篇文章主要介绍了C#实现的SQL备份与还原功能,结合具体实例形式分析了C#操作数据库实现SQL备份与还原相关的控件、SQL连接、文件等操作技巧,需要的朋友可以参考下
这篇文章主要介绍了C#实现的SQL备份与还原功能,结合具体实例形式分析了C#操作数据库实现SQL备份与还原相关的控件、SQL连接、文件等操作技巧,需要的朋友可以参考下
这篇文章主要介绍了C#实现的SQL备份与还原功能,结合具体实例形式分析了C#操作数据库实现SQL备份与还原相关的控件、SQL连接、文件等操作技巧,需要的朋友可以参考下
本文实例讲述了C#实现的SQL备份与还原功能。分享给大家供大家参考,具体如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
//记得加 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#程序设计有所帮助。
发表评论