大概描述下,C#有string s = 1,2,3,4,5,6,7,8,9,0; 想一次性插入到数据库里面,单次循环一次一次插入的话太慢了,一次插入在几万到十万的数据就非常慢,所以想一次性插入数据库,sql语句这样,insert into table([id],[nameid]) select newid(),'1' union all select newid(),'2' union all union all select newid(),'3' .......,现在就是不知道C#中应该怎么去写循环和数组,因为S的长短不一定,求大神! 数据库C#SQL
sql = "insert into table([id],[nameid]) " + string.Join(" union all ", s.Split(',').Select(x => "select newid(),'" + x + "'"));
s长度我会控制,不超过1000,应该没问题,我自己测试的,如果发1w,我自己切割成10个1000,插入只需要10次,但是循环的话就是1w次,,速度差的很大
每1000条进行一次Commit
看是否有帮助
你这个不太好
每次都需要重新编译SQL语句
参数化可以1000条或者更多条一次提交事务
=>
OleDbDataAdapter adapter;
OleDbCommand cmd = new OleDbCommand("insert ...", connection);
cmd.Parameters.Add("col1", OleDbType.Char, 50, "col1");
...
adapter.InsertCommand = cmd;
...
adapter.Update();