我想在循环中重用参数化查询。
(这个查询是一个简单的例子,我不认为我可以在 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());
( ... )
}
我想将查询的设置移到循环之外;像
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());
( ... )
}
因此服务器不必为循环中的每个迭代解析相同的 sql。
这可能吗?
最佳答案
你可以添加一个参数
m.Parameters.Add("@param_1", MySqlDbType.Int32);
然后在循环中用
赋值m.Parameters["@param_1"].Value = n;
关于c# 在循环中更改 sql 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44284121/