问题描述
在 C# 中,我试图将 DataTable 作为参数传递给 SQL 语句。我的代码如下:
protected virtual void DoDeleteRecords(List<Guid> ids)
{
if (ids.Count > 0)
{
DataTable tvp = new DataTable();
tvp.Columns.Add("Id",typeof(Guid));
foreach (Guid id in ids)
{
DataRow row = tvp.NewRow();
row["Id"] = id;
tvp.Rows.Add(row);
}
string sql = string.Format("DELETE FROM MyTable WHERE ID IN ({0})","@IDTable");
SqlConnection connection = new SqlConnection(CoreSettings.ConnectionString);
using (connection)
{
SqlCommand command = new SqlCommand(sql,connection);
SqlParameter tvpParam = command.Parameters.AddWithValue("@IDTable",tvp);
tvpParam.SqlDbType = SqlDbType.Structured;
tvpParam.TypeName = "dbo.IDList";
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
}
}
但是,当调用 command.ExecuteNonQuery 时,我收到以下 SqlException 错误:
必须声明标量变量“@IDTable”
我知道这个错误通常与丢失参数值有关,但据我所知,我有。
谁能看出我做错了什么?
非常感谢。
更新我已经修改了问题以从我的示例中删除糟糕的 SQL 注入丰富的代码。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)