窗体顶端
private void button2_Click(object sender, EventArgs e)
2 {
3 if (lboxMenu.Items.Count > 0)
4 {
5 Append(lboxMenu, progressBar);// 附加数据库操作
6 MessageBox.Show("提示:附加成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
7 }
8 else
9 MessageBox.Show("请选择要附加的数据库!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
10 }
11
12 /// <summary>
13 /// 附加数据库操作
14 /// </summary>
15 /// <param name="lbox">将要附加的数据库列表</param>
16 /// <param name="PBar">进度条</param>
17 public void Append(ListBox lbox, ProgressBar PBar)
18 {
19 using (SqlConnection con = new SqlConnection("server=.;pwd=" + strpwd + ";uid=" + struser + ";database=master"))
20 {
21 PBar.Maximum = lbox.Items.Count;
22 for (int i = 0; i < lbox.Items.Count; i++)
23 {
24 string strFile = lbox.Items[i].ToString();
25 string[] getInfo = new string[2];
26 string mdfpath = lbox.Items[i].ToString();//mdf路径
27 string DataName = mdfpath.Substring(mdfpath.LastIndexOf("\\") + 1, mdfpath.Length - mdfpath.LastIndexOf("\\") - 1);
28 DataName = DataName.Remove(DataName.LastIndexOf("."));
29
30 string logIndex = "_Data";
31 int n = DataName.IndexOf(logIndex);
32
33 if (n == -1)
34 {
35 logName = mdfpath.Remove(mdfpath.LastIndexOf("\\")) + "\\" + DataName + "_log.ldf";
36 }
37 else
38 {
39 DataName = DataName.Remove(DataName.LastIndexOf("_"));
40 logName = mdfpath.Remove(mdfpath.LastIndexOf("\\")) + "\\" + DataName + "_log.ldf";
41 }
42 SqlCommand cmd = new SqlCommand();
43 con.Open();
44 cmd.Connection = con;
45 StringBuilder sb = new StringBuilder();
46 //将sp_attach_db追加到StringBuilder对象中
47 sb.Append("sp_attach_db @dbname='" + DataName + "',");
48 sb.Append("@filename1='" + mdfpath + "'");
49 if (System.IO.File.Exists(logName))
50 {
51 sb.Append(",@filename2='" + logName + "'");
52 }
53 else
54 {
55 MessageBox.Show("注意:缺少必备的log文件!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
56 //此处需要修改
57 }
58 try
59 {
60 cmd.CommandText = sb.ToString();
61 cmd.ExecuteNonQuery();
62 }
63 catch (Exception ety)
64 {
65 //如果数据库中存在名为要添加的数据库则抛出异常
66 MessageBox.Show(ety.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
67 }
68 con.Close();
69 //获取附加数据库的名称
70 getInfo[0] = mdfpath.Substring(mdfpath.LastIndexOf("\\") + 1, mdfpath.Length - mdfpath.LastIndexOf("\\") - 1);
71 //获取附加数据库路径
72 getInfo[1] = mdfpath;
73 ListViewItem lvi = new ListViewItem(getInfo, "info");
74 //将名称和路径添加到listView中
75 listView1.Items.Add(lvi);
76 PBar.Value = i + 1;
77 }
78 }
79 }