string sqlStr0 = "select ProName,ProID,MemberPrice,Price from Products where ProID in (@GiftsID)";
SqlParameter[] pms ={
new SqlParameter("@GiftsID",dsAcMess.Tables[0].Rows[0]["GiftsID"])
};
//dsAcMess.Tables[0].Rows[0]["GiftsID"]==76,77,79,83,84,87,94,96,97,98,99
//数据库中ProID 是Int类型的 报错类容:
在将 nvarchar 值 '76,77,79,83,84,87,94,96,97,98,99' 转换成数据类型 int 时失败求解改怎么解决呢?我想组成这样的sql语句select ProName,ProID,MemberPrice,Price from Products where ProID in (76,77,79,83,84,87,94,96,97,98,99)
或使用charindex(','+ltrim(ProID)+',',','+@GiftsID+',')>0
string sqlStr0 = "select ProName,ProID,MemberPrice,Price from Products where ProID in (" + GiftsID + " )";除非你有什么必要的原因一定要使用你的那种方式,这种情况我觉得比较适合直接构建
create proc xxxx
@GiftsID varchar(100)
as begin
set @sql='select ProName,ProID,MemberPrice,Price from Products where ProID in ('+@GiftsID+')'
exec(@sql)
end
SqlParameter[] pms ={
new SqlParameter("@GiftsID",dsAcMess.Tables[0].Rows[0]["GiftsID"])
};
//dsAcMess.Tables[0].Rows[0]["GiftsID"]==76,77,79,83,84,87,94,96,97,98,99
//数据库中ProID 是Int类型的 把存储过程的@GiftsID设置成varchar类型