笔记--Sql批量插入、数据库中的Null问题

01Sql批量插入
实验发现用一下方法时间并不是真的很短。
原因:数据库连接池:ado.net会尽可能的服用连接池中的链接
using (SqlConnection conn = new SqlConnection(connStr)) 
            {
                conn.Open();


                for (int i = 0; i < lines.Length;i++ )
                //foreach (string line in lines)
                {
                    string line = lines[i];//foreach循环中没有这一行。
                    string[] strs = line.Split('\t');//转义字符\t表示tap
                    string startTelNum = strs[0];
                    string city = strs[1];
                    city = city.Trim('"');//去掉两边的双引号
                    string telType = strs[2];
                    telType = telType.Trim('"');


                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = @"insert into T_TelNum(StartTelNum,TelType,TelArea)
                                values(@StartTelNum,@TelType,@TelArea)";
                        cmd.Parameters.Add(new SqlParameter("@StartTelNum", startTelNum));
                        cmd.Parameters.Add(new SqlParameter("@TelType", telType));
                        cmd.Parameters.Add(new SqlParameter("@TelArea", city));


                        cmd.ExecuteNonQuery();


                    }


                    TimeSpan ts = DateTime.Now - startTime;//时间段相减得到TimeSpan类型
                    double ellapseSec=ts.TotalSeconds;//已经耗用的秒数
                    double totalSec = (ellapseSec / (i + 1)) * lines.Length;//计算机编程中,先乘后除
                }




使用SqlbulkCopy批量插入数据
private void button1_Click(object sender, RoutedEventArgs e)
        {
            string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].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("City");
             table.Columns.Add("Teltype");


            for (int i = 0; i < lines.Length; i++)
            //foreach (string line in lines)
               {
                        string line = lines[i];//foreach循环中没有这一行。
                        string[] strs = line.Split('\t');//转义字符\t表示tap
                        string startTelNum = strs[0];
                        string city = strs[1];
                        city = city.Trim('"');//去掉两边的双引号
                        string telType = strs[2];
                        telType = telType.Trim('"');
                        
                    DataRow row=table.NewRow();//创建一个DataRow对象
                    row["StartTelNum"]=startTelNum;//一定要在之前table.Columns.Add("StratTelNum");
                    row["City"]=city;
                    row["TelType"]=telType;
                    table.Rows.Add(row);//只创建,没有添加数据。


               }


            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr))//第二步将数据加入到数据库中
            {
                bulkCopy.DestinationTableName = "T_Telnum";
                bulkCopy.ColumnMappings.Add("StartTelNum", "StartTelNum");
                bulkCopy.ColumnMappings.Add("City", "TelArea");//用bulkCopy.ColumnMappings.Add()建立数据中那一列与表中的对数据库应列的对应关系
                bulkCopy.ColumnMappings.Add("Teltype", "TelType");
                bulkCopy.WriteToServer(table);
            }


            MessageBox.Show("accomplish");


}




02数据库中的Null问题


在数据库中,NULL和空字符串以及0都不一样。NULL表示不知道。


查找是NULL:select * from T_student where Name is NULL 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值