为什么要使用AddWithValue + Parameters [“@ somevar”]。值而不仅仅是使用AddWithValue? (MySql + C#)

时间:2012-10-04 20:56:35

标签: c# mysql

http://dev.mysql.com/doc/refman/5.5/en/connector-net-programming-prepared.html的示例代码中,有代码(每次执行:迭代中cmd.ExecuteNonQuery()):

try
{
    conn.Open();
    cmd.Connection = conn;

    cmd.CommandText = "INSERT INTO myTable VALUES(NULL, @number, @text)";
    cmd.Prepare();

    cmd.Parameters.AddWithValue("@number", 1);
    cmd.Parameters.AddWithValue("@text", "One");

    for (int i=1; i <= 1000; i++)
    {
        cmd.Parameters["@number"].Value = i;
        cmd.Parameters["@text"].Value = "A string value";
        cmd.ExecuteNonQuery();
    }

}

为什么不反而(迭代后做一次:cmd.ExecuteNonQuery()):

 try
    {
        conn.Open();
        cmd.Connection = conn;
        cmd.CommandText = "INSERT INTO myTable VALUES(NULL, @number, @text)";
        cmd.Prepare();
        for (int i=1; i <= 1000; i++)
        {
          cmd.Parameters.AddWithValue("@number", i);
          cmd.Parameters.AddWithValue("@text", "One");
        }
        cmd.ExecuteNonQuery();
    }

1 个答案:

答案 0 :(得分:1)

您的代码示例不正确; cmd.ExecuteNonQuery();实际上在循环内。

使用不同的参数执行1000次查询,而无需重新创建命令。