C# SQL 插入命令

标签 c# sql loops insert sqlcommand

谁能告诉我以下两种插入记录的方式可以带来更好的性能?

案例一

SqlCommand cmd = new SqlCommand();

for (int i = 0; i < 10000; i++)
{
  cmd = new SqlCommand("insert into test(id, name) value('" + i + "', '" + i + "')");
  cmd.ExecuteNonQuery();
}

案例二

string sql = null;

for (int i = 0; i < 10000; i++)
{
  sql += "insert into test(id, name) value('" + i + "', '" + i + "')";
}

SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();

最佳答案

首先:停止将您的 SQL 代码连接在一起!这是对各地黑客的邀请用SQL注入(inject)攻击你!请改用参数化查询!

我会使用这个解决方案:创建一个带有参数化查询的单个 SqlCommand,然后执行它:

string stmt = "INSERT INTO dbo.Test(id, name) VALUES(@ID, @Name)";

SqlCommand cmd = new SqlCommand(smt, _connection);
cmd.Parameters.Add("@ID", SqlDbType.Int);
cmd.Parameters.Add("@Name", SqlDbType.VarChar, 100);

for (int i = 0; i < 10000; i++)
{
    cmd.Parameters["@ID"].Value = i;
    cmd.Parameters["@Name"].Value = i.ToString();

    cmd.ExecuteNonQuery();
}

或使用 SqlBulkCopy,尤其是当您要插入超过 10,000 行时。

关于C# SQL 插入命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218867/

相关文章:

mysql - SQL - 配对电影流派

mysql - SELECT DISTINCT `col` 其中 (`col` 不是唯一的)

Javascript 循环遍历列表不起作用

javascript - 每 5 个循环计数一次

c# - 从 Web 服务器访问 SQL 数据库的合适方法

c# - URI 编码奇怪

javascript - ASP.NET OnClientClick ="return validate()"不起作用

javascript - 在 node.js 中导入 sql 文件并针对 PostgreSQL 执行

Java While 循环程序

c# - 等待一个可观察的