很简单的例子:
假设你每次执行的SQL语句是
string sql="Insert xxx(a) values('a')";
exec(sql);你不是每次都去执行这个SQL,而是把很多这样的SQL拼成一个长SQL,每个小SQL之间用";"分隔。
类似 string sql="insert xxx(a) values('a');insert xxx(b) values('b');";
exec(sql);
可以拼接1000-2000个一次执行
为了更高性能,可以在sql开始前加一个 begin transation,最后再 commit;
假设你每次执行的SQL语句是
string sql="Insert xxx(a) values('a')";
exec(sql);你不是每次都去执行这个SQL,而是把很多这样的SQL拼成一个长SQL,每个小SQL之间用";"分隔。
类似 string sql="insert xxx(a) values('a');insert xxx(b) values('b');";
exec(sql);
可以拼接1000-2000个一次执行
为了更高性能,可以在sql开始前加一个 begin transation,最后再 commit;
while (true)//如果有数据接收到就执行下面插入数据库操作
{
SqlConnection connection = new SqlConnection("Data Source=192.168.114.129;Initial Catalog=syslog;User ID=sa;Password=123456");/连接数据库
connection.Open();
SqlCommand command = new SqlCommand("insert into qqlogin ([date],[data]) values ('" + tmpdate + "','" + tmp + "')", connection);//插入这一条数据记录;
command.ExecuteNonQuery();
connection.Close();
}请3楼和4楼老师帮忙改写一下我的这段代码吧
connection.Open();
while (true)//如果有数据接收到就执行下面插入数据库操作
{
SqlCommand command = new SqlCommand("insert into qqlogin ([date],[data]) values ('" + tmpdate + "','" + tmp + "')", connection);//插入这一条数据记录;
command.ExecuteNonQuery();
}
connection.Close();
不知道怎么用 SqlBulkCopy
但是我用线程将采集的数据存入buffer,然后存到50条数据批量插入数据库
insert into qqlogin ([date],[data]) values (1,2),(3,4),(5,6)......
一次插入50条,情况好多了,不在死机,但是貌似有点卡顿
数据库没有报错,sql2008,不知道一次插入100条怎么样,正在试验
批量插入。
不知道怎么用 SqlBulkCopy
但是我用线程将采集的数据存入buffer,然后存到50条数据批量插入数据库
insert into qqlogin ([date],[data]) values (1,2),(3,4),(5,6)......
一次插入50条,情况好多了,不在死机,但是貌似有点卡顿
数据库没有报错,sql2008,不知道一次插入100条怎么样,正在试验感觉你这个最好是用SqlBulkCopy,至少你可以隔一段时间提交数据库,而且插入数据库快!不然你不停的往表里面写,那读的时候怎么办,数据库的负载太大了!
{
bulkCopy.DestinationTableName = "TableName";
bulkCopy.WriteToServer(Table);
}