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)
这不起作用 - 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)
| 归档时间: |
|
| 查看次数: |
3729 次 |
| 最近记录: |