C#SQL插入命令谁能告诉我以下2种插入记录的方式可以创造更好的性能?案例1SqlCommandcmd=newSqlCommand();for(inti=0;i<10000;i++){cmd=newSqlCommand("insertintotest(id,name)value('"+i+"','"+i+"')");cmd.ExecuteNonQuery();}Case2stringsql=null;for(inti=0;i<10000;i++){sql+="insertintotest(id,name)value('"+i+"','"+i+"')";}SqlCommandcmd=newSqlCommand(sql,conn);cmd.ExecuteNonQuery();首先:停止连接您的SQL代码!!这是邀请黑客到处用SQL注入攻击你!请改用参数化查询!我会使用这个解决方案:创建一个带有参数化查询的SqlCommand,然后执行:stringstmt="INSERTINTOdbo.Test(id,name)VALUES(@ID,@Name)";SqlCommandcmd=newSqlCommand(smt,_connection);cmd.Parameters.Add("@ID",SqlDbType.Int);cmd.Parameters.Add("@Name",SqlDbType.VarChar,100);for(inti=0;i或使用SqlBulkCopy,特别是如果您插入超过10'000行。第二种方法似乎比#1更快,因为您立即发送INSERT命令。第一个是每个ExecuteNonQuery到SQL服务器的往返。但是您应该尝试BULKINSERT命令:BULKINSERT(Transact-SQL),我想您会获得比您提供的任何一个选项都更好的性能。[]应该清楚地表明按原样,这两种情况都不起作用。案例#1需要指定连接。案例#2要求您以分号结束语句以运行多个命令,如下所示:stringsql=null;for(inti=0;i最终,最好的方法是自己在几千行上测试一下。我的猜测是案例#2的性能会更好,因为它不仅需要设置一个SqlCommand对象,但它只访问数据库一次。我不认为第二个会起作用。但是,在SQLServer2008中有一种在单个INSERT语句中插入多行的语法,我认为这会比您建议的两个选项:INSERTINTOtest(id,name)VALUES('1','foo'),('2','bar'),('3','baz')-等等...但是,如果你真的想要高性能,考虑使用SqlBulkCopy类。第二个可能更快,因为你最终只做一次往返。两者同样糟糕,因为你没有使用参数化查询。以上是全部内容C#学习教程之:C#SQLInsertCommand,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
