c#在循环中更改sql的参数

Lei*_*and 0 c# mysql parameter-passing

我想在循环中重用参数化查询。

(这个查询是一个简单的例子,我认为我不能在 sql 中进行循环并只返回所需的行)

代替

private String sql = "SELECT v FROM t WHERE VAL_1 = @param_1";
for (int n=1;n<10;n++)
{
    MySqlCommand m = new MySqlCommand(sql);
    m.Parameters.AddWithValue("@param_1", n);
    res = Convert.ToInt32(m.ExecuteScalar());
    ( ... )
}
Run Code Online (Sandbox Code Playgroud)

我想将查询的设置移到循环之外;就像是

private String sql = "SELECT v FROM t WHERE VAL_1 = @param_1";
MySqlCommand m = new MySqlCommand(sql);
m.Parameters.Add("@param_1");  // does not exist
for (int n=1;n<10;n++)
{
    m.Parameters.Set("@param_1", n); // does not exist
    res = Convert.ToInt32(m.ExecuteScalar());
    ( ... )
}
Run Code Online (Sandbox Code Playgroud)

因此,服务器不必为循环中的每个过滤器解析相同的 sql。

那可能吗?

Dir*_*irk 6

您可以添加一个参数

m.Parameters.Add("@param_1", MySqlDbType.Int32);
Run Code Online (Sandbox Code Playgroud)

然后在循环中分配一个值

m.Parameters["@param_1"].Value = n;
Run Code Online (Sandbox Code Playgroud)