大虾门,这问题怎么解决啊,本人能力有限啊,sql的in的问题

hateyoucode 2009-01-04 04:19:42
public DataTable CookieView(string str)
{
string sql = "Select * From t_Product where Proid in (@StrID)";
SqlParameter[] para = { new SqlParameter("@StrID", str) };
SqlDataReader sdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sql, para);

报错啊,
System.Data.SqlClient.SqlException: 将 nvarchar 值 '37,38,39' 转换为数据类型为 int 的列时发生语法错误

请问下各位要怎么改啊!,我是打算将37,38,39作为str传进来,这里就不能用!
...全文
94 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hateyoucode 2009-01-04
  • 打赏
  • 举报
回复
好了,行了!Lee_Moon的是可行,谢谢大家
hateyoucode 2009-01-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Lee_Moon 的回复:]
string sql = "exec('Select * From t_Product where Proid in (' + @StrID + ')')“;
----
不好意思 是这样。
[/Quote]
被准备语句 '(@StrID nvarchar(4000))exec('Select * From t_Product where Proid' 需要参数 @StrID,但未提供该参数。

还是个错,你们的难道都没报错,晕啊...
Lee_Moon 2009-01-04
  • 打赏
  • 举报
回复
string sql = "exec('Select * From t_Product where Proid in (' + @StrID + ')')“;
----
不好意思 是这样。
Lee_Moon 2009-01-04
  • 打赏
  • 举报
回复
string sql = "exec(‘Select * From t_Product where Proid in (@StrID)’)";
-------------
少了单引号 不好意思 试验下
Lee_Moon 2009-01-04
  • 打赏
  • 举报
回复

string sql = "exec(Select * From t_Product where Proid in (@StrID))";
-------------
这样试下
hateyoucode 2009-01-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sy_binbin 的回复:]
SqlParameter[] para = { new SqlParameter("@StrID", SqlDbType.NVarChar) };
para[0].Value = str;

这样试试
[/Quote]

System.Data.SqlClient.SqlException: 将 nvarchar 值 '37,38,39' 转换为数据类型为 int 的列时发生语法错误。还是这个错误..
hateyoucode 2009-01-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nbgcqlk 的回复:]
我这里是可以用的
SqlParameter[] para = { new SqlParameter("@StrID",SqlDbType.Varchar,250,str) };试试
[/Quote]

不行啊,我这里报错
被准备语句 '(@StrID varchar(250))Select * From t_Product where Proid in (@St' 需要参数 @StrID,但未提供该参数。
sy_binbin 2009-01-04
  • 打赏
  • 举报
回复
SqlParameter[] para = { new SqlParameter("@StrID", SqlDbType.NVarChar) };
para[0].Value = str;

这样试试
hateyoucode 2009-01-04
  • 打赏
  • 举报
回复
直接用sql是能行,不过,我想用上面的那种方法啊,难道不能这么用?大虾门,来帮忙啊
nbgcqlk 2009-01-04
  • 打赏
  • 举报
回复
我这里是可以用的
SqlParameter[] para = { new SqlParameter("@StrID",SqlDbType.Varchar,250,str) };试试
zh__zh 2009-01-04
  • 打赏
  • 举报
回复
就直接用字符串拼装吧 ...in("+str+")";

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧