C#数据库操作之批量附加数据库

窗体顶端

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         }

原文地址:https://www.cnblogs.com/beeone/p/1981202.html