0.数据库连接
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 private void button1_Click(object sender, EventArgs e) 2 { 3 this.btnUpdate.Enabled = false; 4 #region 数据库连接 5 connStr.Append("Data Source="); 6 connStr.Append(txtServer.Text); 7 connStr.Append(";"); 8 connStr.Append("Initial Catalog="); 9 connStr.Append(txtDataBase.Text); 10 connStr.Append(";"); 11 connStr.Append("User ID="); 12 connStr.Append(txtUser.Text); 13 connStr.Append(";"); 14 connStr.Append("Password="); 15 connStr.Append(txtPass.Text); 16 this.labShow.Text = "正在查找文件......"; 17 using (SqlConnection conn = new SqlConnection(connStr.ToString())) 18 { 19 //MessageBox.Show(connStr.ToString()); 20 ListSql = new List<string>(); 21 ListMdb = new List<string>(); 22 GetDirectories(Application.StartupPath); 23 //ListSql.Sort(new MySort()); 24 25 foreach (var item in ListSql) 26 { 27 GetSqlFile(item); 28 } 29 foreach (var item in ListMdb) 30 { 31 ReadDataToSQL(item); 32 } 33 MessageBox.Show("升级成功......"); 34 this.btnUpdate.Enabled = true; 35 Application.Exit(); 36 } 37 #endregion 38 39 }
1.查找文件与目录
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #region 查找目录与文件 2 public void GetDirectories(string path) 3 { 4 5 string[] fileNames = Directory.GetFiles(path); 6 string[] directories = Directory.GetDirectories(path); 7 foreach (string file in fileNames) 8 { 9 string str = System.IO.Path.GetFullPath(path); 10 if (System.IO.Path.GetExtension(file).ToLower() == ".sql") 11 { 12 ListSql.Add(file); 13 //GetSqlFile(file); 14 } 15 if (System.IO.Path.GetExtension(file).ToLower() == ".mdb") 16 { 17 //ReadDataToSQL(file); 18 ListMdb.Add(file); 19 } 20 } 21 22 foreach (string dir in directories) 23 { 24 GetDirectories(dir); 25 } 26 } 27 #endregion
2.获取本地脚本文件、执行sql文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 foreach (var item in ListSql) 2 { 3 GetSqlFile(item); 4 }
#region 批量执行本地的sql文件到sqlServer数据库 /// <summary> /// 获取本地的脚步文件 /// </summary> private void GetSqlFile(string path) { try { string obj_file = this.GetFileReader(path); obj_file = obj_file.Replace("GO", " | ").Replace("go", " | ");//替换符号 string[] obj_filelist = obj_file.Split('|'); foreach (string str in obj_filelist) { this.labShow.Text ="正在执行脚本"+ Path.GetFileName(path)+"文件......"; this.ExecSQL(str); } // MessageBox.Show("导入成功!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } catch { } } /// <summary> /// 获取文件内容 /// </summary> /// <param name="path">文件路径</param> /// <returns>返回sql文件的执行语句</returns> public string GetFileReader(string path) { try { using (StreamReader sr = new StreamReader(path, Encoding.Default)) { String line = sr.ReadToEnd(); return line; } } catch (Exception ex) { return ""; } } /// <summary> /// 执行SQL /// </summary> /// <param name="SQL"></param> public void ExecSQL(string SQL) { try { using (SqlConnection conn = new SqlConnection(@"Data Source=(local);Initial Catalog=数据库名称;User ID=用户名;Password=密码")) { conn.Open(); using (SqlCommand cmd = new SqlCommand(SQL, conn)) { cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); } conn.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message + "|" + ex.Source); } } #endregion
3.获取mdb本地文件,执行读取与插入操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #region 批量执行本地的mdb文件到sqlServer数据库 2 /// <summary> 3 ///读取access数据库中的数据并插入到sqlServer数据库表中 4 /// </summary> 5 /// <param name="file">文件路径</param> 6 private void ReadDataToSQL(string file) 7 { 8 try 9 { 10 this.labShow.Text = "正在执行脚本" + Path.GetFileName(file) + "文件......"; 11 string StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data source=" + file + ""; 12 OleDbConnection adoConn = new OleDbConnection(StrConn); 13 //adoConn.ConnectionString = StrConn; 14 adoConn.Open(); 15 DataTable dt = adoConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); 16 for (int i = 0; i < dt.Rows.Count; i++) 17 { 18 String tableName = dt.Rows[i]["TABLE_NAME"].ToString(); 19 20 //从ACCESS数据库查询数据 21 string sql1 = "select * from " + tableName; 22 DataSet Myds = new DataSet(); 23 OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql1, adoConn); 24 //填充数据 25 dataAdapter.Fill(Myds, tableName); 26 //插入数据 27 BulkData(Myds, tableName); 28 } 29 } 30 catch (Exception ex) 31 { 32 MessageBox.Show(ex.ToString()); 33 } 34 } 35 /// <summary> 36 /// 执行Sql语句 37 /// </summary> 38 /// <param name="_Ds">DataSet数据集</param> 39 /// <param name="_TableName">表名称</param> 40 /// <returns>是否成功</returns> 41 public bool BulkData(DataSet _Ds, string _TableName) 42 { 43 SqlConnection SqlCon = new SqlConnection(); 44 SqlCon.ConnectionString = connStr.ToString(); 45 SqlCon.Open(); 46 SqlBulkCopy SqlBulk = new SqlBulkCopy(SqlCon); 47 SqlBulk.DestinationTableName = _TableName; 48 try 49 { 50 SqlBulk.WriteToServer(_Ds.Tables[0], DataRowState.Unchanged); 51 return true; 52 } 53 catch(Exception ex) 54 { 55 MessageBox.Show(ex.ToString()); 56 return false; 57 } 58 finally 59 { 60 SqlCon.Close(); 61 SqlCon.Dispose(); 62 SqlBulk.Close(); 63 } 64 } 65 #endregion