当前位置:Gxlcms > 数据库问题 > SqlBulkCopy的使用

SqlBulkCopy的使用

时间:2021-07-01 10:21:17 帮助过:4人阅读

void btn_import_Click(object sender, RoutedEventArgs e) { //先读取文件 //打开对话框,选择文件。 OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "文本文件|*.txt"; if (ofd.ShowDialog()==false) { return; } string[] lines = File.ReadLines(ofd.FileName,Encoding.Default).ToArray(); DateTime startTime = DateTime.Now; //新建表 DataTable dtTable = new DataTable(); //给表添加列 dtTable.Columns.Add("StartTellName"); dtTable.Columns.Add("TellType"); dtTable.Columns.Add("TellArea"); //遍历每一行数据,处理数据,添加到行(DataRow)中 foreach (string line in lines) { string[] strs = line.Split(\t);//\t制表符 string startTellNum = strs[0]; string tellType = strs[1].Trim(");//去除两边的" string tellArea = strs[2].Trim("); DataRow row = dtTable.NewRow(); row["StartTellName"] = startTellNum;//给字段赋值 row["TellType"] = tellType; row["TellArea"] = tellArea; dtTable.Rows.Add(row);//添加到一行中 } //获取配置文件中连接字符串 string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; //SqlBulkCopy是实现IDisposable接口的,所以必须用using using (SqlBulkCopy bulk = new SqlBulkCopy(connstr)) { bulk.DestinationTableName = "T_TellNum";//指定表名 //本地列名与数据库列名建立连接 bulk.ColumnMappings.Add("StartTellName", "starttellnum"); bulk.ColumnMappings.Add("TellType", "telltype"); bulk.ColumnMappings.Add("TellArea", "tellarea"); //把dtTable的数据写到数据库 bulk.WriteToServer(dtTable); } TimeSpan ts = DateTime.Now - startTime; //计算时间 MessageBox.Show(ts.ToString()); }

#code

4、数据库字段

  id bigint primary key,

     starttellnum nvarchar(30),

     telltype  nvarchar(30),

     tellarea  nvarchar(30),

5、可能遇到的问题

     技术分享

    解决办法:请检查建立连接字段时字段名是否都正确。

 

   技术分享

   解决方法

    1,首先检查数据库表的字段是否过小

    2,检查数据中是否有类似单引号的数据,做一下过滤

SqlBulkCopy的使用

标签:

人气教程排行