SqlBulkCope数据的批量插入(14)

第一步创建一个名为“SqlBulkCope”的窗体,然后拖一个按钮名为btnSqlBulkCope,并且为其添加Click事件,代码如下:

 private void btnImport_Click(object sender, RoutedEventArgs e)
        {
            string connStr = ConfigurationManager.ConnectionStrings["dbLoginConnStr"].ConnectionString;
            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 table = new DataTable();
            table.Columns.Add("StartTelNum");
            table.Columns.Add("TelArea");
            table.Columns.Add("TelType");
            table.Columns.Add("TelZone");

            for (int i = 1; i < lines.Count(); i++)
            {
                string line = lines[i];
                string[] strs = line.Split('\t');//‘\t’为制表符
                string startTelNum = strs[0];
                string telArea = strs[1];
                telArea = telArea.Trim('"');//去掉两边的双引号:"北京市"
                string telType = strs[2];
                telType = telType.Trim('"');//去掉两边的双引号:"联通"    
               string telZone = strs[3];
                telZone = telZone.Trim('"');//去掉两边的双引号:"010"
                DataRow row =table.NewRow();//创建一个DataRow对象
                row["StartTelNum"]=startTelNum;//一定要在一开始创建table.Columns添加列
                row["TelArea"]=telArea;
                row["TelType"]=telType;
                row["TelZone"] = telZone;
                table.Rows.Add(row);//NewRow只是创建,没有插入
            }
            using (SqlBulkCopy bulkCope = new SqlBulkCopy(connStr))
            {
                bulkCope.DestinationTableName="T_TelNum";
                //添加dataTable中列名与数据库表中列名的映射
                bulkCope.ColumnMappings.Add("StartTelNum","StartTelNum");
                bulkCope.ColumnMappings.Add("TelArea","TelArea");
                bulkCope.ColumnMappings.Add("TelType","TelType");//dataTable中与数据库表的对应关系(datatable中的名字,数据库中的名字)
                bulkCope.ColumnMappings.Add("TelZone", "TelZone");
                bulkCope.WriteToServer(table);
            }
           
            TimeSpan ts = DateTime.Now - startTime;//DateTime得到TimeSpan类型
            MessageBox.Show(ts.ToString());
    }

 

posted @ 2013-06-02 20:19  秋水惜朝  阅读(440)  评论(0编辑  收藏  举报