Ben
Ben

Reputation: 25807

Why use AddWithValue + Parameters["@somevar"].Value instead of just using AddWithValue? (MySql + C#)

In the sample code at http://dev.mysql.com/doc/refman/5.5/en/connector-net-programming-prepared.html, there is the code(do each time : cmd.ExecuteNonQuery() in iteration):

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();
    }

}

Why is it not instead(do 1 time: cmd.ExecuteNonQuery() after iteration):

 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();
    }

Upvotes: 0

Views: 419

Answers (1)

SLaks
SLaks

Reputation: 887453

Your code sample is incorrect; the cmd.ExecuteNonQuery(); is actually inside the loop.

This executes the query 1,000 times with different parameters, without re-creating the command.

Upvotes: 1

Related Questions