将数据类型nvarchar转换为bigint时出错

Pra*_*eep 1 c# sql-server asp.net ado.net

您好我收到此错误 -

'将数据类型nvarchar转换为bigint时出错"

运行时这是代码:

string idString = "1,2,3,4";

string updateSql = "UPDATE DistinctClubcard SET ProcessedYorN = 'Y' " + "WHERE CLUBCARD_NUMBER in (@flag) ";

SqlCommand UpdateCmd = new SqlCommand(updateSql, cn);
UpdateCmd.Parameters.Add(new SqlParameter("@flag", SqlDbType.NVarChar, 2000));
UpdateCmd.Parameters["@flag"].Value = idString ;
UpdateCmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

Bro*_*ass 6

这不起作用 - SQL IN (...)查询需要一个sql参数数组,它不仅适用于传递单个字符串参数.而是为每个值和一个整数值数组使用单独的参数:

string idString = "1,2,3,4";
var ids = idString.Split(',').Select(x => int.Parse(x)).ToArray();

for(int i =0;i< ids.Length;i++)
{
  UpdateCmd.Parameters.Add(new SqlParameter("@flag"+i, SqlDbType.BigInt));
  UpdateCmd.Parameters["@flag"+i].Value = ids[i];
}
Run Code Online (Sandbox Code Playgroud)

当然,这也会改变您的查询,您必须考虑参数:

string flags =  string.Join(",", ids.Select((s, i) => "@flag" + i));
string updateSql = string.Format("UPDATE DistinctClubcard SET ProcessedYorN = 'Y' WHERE CLUBCARD_NUMBER in ({0})",flags);
Run Code Online (Sandbox Code Playgroud)