Sql批量插入和批量删除的用法是每个使用数据库的人基本都要掌握的,在这里主要介绍下Sql批量插入的用法,让我们先看下批量删除一般如何来做,供您参考,希望能对您有所帮助。
Code highlighting produced by Actipro CodeHighlighter (freeware)
--> DELETE FROM TestTable WHERE ID IN (1, 3, 54, 68) --sql2005下运行通过
Code highlighting produced by Actipro CodeHighlighter (freeware)
--> sql写法:
INSERT INTO TestTable SELECT 1, 'abc' UNION SELECT 2, 'bcd' UNION SELECT 3, 'cde'
oracle写法:
INSERT INTO TestTable SELECT 1, 'abc' From daul UNION SELECT 2, 'bcd' From daul
1、表不能有主键或者主键是数据库默认的(sql用自动递增列,oracle用序列)
2、组合sql语句时只能直接用字符串连接,不能用参数化sql语句的写法(就是在组合的sql中用@parm做占位符,再给Command对象添加Parameter)
以上两条任意一条不满足,效率的提高都不明显。
由于是考虑到大数据量的批量插入,于是我想到了ADO.NET2.0的一个新的特性:SqlBulkCopy。有关这个的性能,很早之前我是亲自做过性能测试的,效率非常高。
代码
private static long SqlBulkCopyInsert()
DataTable dataTable = CreateDataTable();
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
if (dataTable!=null && dataTable.Rows.Count!=0)
}
Sql批量插入和批量删除的用法是每个使用数据库的人基本都要掌握的,在这里主要介绍下Sql批量插入的用法,让我们先看下批量删除一般如何来做,供您参考,希望能对您有所帮助。
Code highlighting produced by Actipro CodeHighlighter (freeware)
--> DELETE FROM TestTable WHERE ID IN (1, 3, 54, 68) --sql2005下运行通过
Code highlighting produced by Actipro CodeHighlighter (freeware)
--> sql写法:
INSERT INTO TestTable SELECT 1, 'abc' UNION SELECT 2, 'bcd' UNION SELECT 3, 'cde'
oracle写法:
INSERT INTO TestTable SELECT 1, 'abc' From daul UNION SELECT 2, 'bcd' From daul
Code highlighting produced by Actipro CodeHighlighter (freeware)
-->private static long SqlBulkCopyInsert()
DataTable dataTable = CreateDataTable();
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
if (dataTable!=null && dataTable.Rows.Count!=0)
}