关于SqlParameter中IN子句查询的问题

eimen3030 2010-05-21 05:49:33
priductId="1,2,3,4,4,5,6";


public int Delete(string ProductId)
{
//cmdText = "delete from Product where ProductId in (" + ProductId + ")";
//res = sqlhelper.ExecuteNonQuery(cmdText, CommandType.Text);
//return res;

string TempString = "("+ProductId+")";
cmdText = "delete from Product where ProductId in @TempString";
SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("@TempString",TempString)
};
res = sqlhelper.ExecuteNonQuery(cmdText, CommandType.Text);
return res;
}




我怎样搞也搞不出来,请高人指点一下
...全文
564 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
listen 2011-08-19
  • 打赏
  • 举报
回复
in 参数
string strSql = "exec(’select * from Person.Address where AddressID in (’+@add+’)’)";
SqlParameter[] Parameters = new SqlParameter[1];
Parameters[0] = new SqlParameter("@add", "343,372,11481,11533,11535,11755,11884,12092,12093,12143");
eimen3030 2010-05-25
  • 打赏
  • 举报
回复
谢谢了,看只能用其它方法了.
Jeremiah 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 w59879213 的回复:]

可以分2部份处理,
1. 首先,在MSSQL数据库服务器上创建一个自定义的函数.
2. 在C#的Query中使用这个函数.
SQL code

CREATE FUNCTION [dbo].[f_split](@c varchar(2000),@split varchar(2))
returns @t TABLE(col varchar(20))
……
[/Quote]
有点问题,补充一下.
这个一句, string TempString = "("+ProductId+")";
不用拼接,直接使用 string TempString = "1,2,3,4,4,5,6"; 即可.
Jeremiah 2010-05-21
  • 打赏
  • 举报
回复
可以分2部份处理,
1. 首先,在MSSQL数据库服务器上创建一个自定义的函数.
2. 在C#的Query中使用这个函数.

CREATE FUNCTION [dbo].[f_split](@c varchar(2000),@split varchar(2))
returns @t TABLE(col varchar(20))
AS
begin
while(charindex(@split,@c)<>0)
begin
INSERT @t(col) VALUES (substring(@c,1,charindex(@split,@c)-1))
SET @c = stuff(@c,1,charindex(@split,@c),'')
end
INSERT @t(col) VALUES (@c)
RETURN
end
GO




string TempString = "("+ProductId+")";

cmdText = "delete from Product where ProductId in (select * from dbo.f_split(@TempString,’,'))";

SqlParameter[] paras = new SqlParameter[] {
new SqlParameter("@TempString",TempString)
};
qldsrx 2010-05-21
  • 打赏
  • 举报
回复
in语句后面不能使用参数化传递多个字符串,它会作为一个带有逗号的字符串整体处理,所以这种情况你只能使用字符串拼接来处理。
wuyq11 2010-05-21
  • 打赏
  • 举报
回复
"("+TempString+")"

in (@paramname)
SqlParameter param = new SqlParameter();
param.ParameterName = "@paramname";
param.Value = "";
请叫我卷福 2010-05-21
  • 打赏
  • 举报
回复
查询参数要加到SqlCommand对象的Parameters集合中去
hehe8812345 2010-05-21
  • 打赏
  • 举报
回复
帮忙顶起...
sharktxl 2010-05-21
  • 打赏
  • 举报
回复
感觉sqlparameter 的都是要数据库类型的吧
「已注销」 2010-05-21
  • 打赏
  • 举报
回复
參數這樣用?
eimen3030 2010-05-21
  • 打赏
  • 举报
回复
不是很清楚,能具体一点吗?谢谢
sxiaohui8709253 2010-05-21
  • 打赏
  • 举报
回复
TempString 这个东西 初始化要做的犀利一点
deknight 2010-05-21
  • 打赏
  • 举报
回复
cmdText.Parameters.Add(new SqlParameter(@TempString",TempString));

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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