关于使用参数访问数据库的问题

zengzhimin1980 2009-06-08 11:38:01
现在我的程序是这样的:

SQLText 如下:
select departmentid,cname from carduser where username in(@ownerId)

SQLParameter 如下:
SqlParameter param = new SqlParameter(Param_OwnerId, SqlDbType.VarChar, 100);
param.Value = owderId;

owderId 传过来的值是 owderId="abc,def"

以上我想得到的结果肯定是不正确的,我希望得到的结果是:

select departmentid,cname from carduser where username in('abc','def')
这条语句查得的结果

请问我如果要用参数的话,我应该怎样写呀?
...全文
22 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujianzhou 2009-06-08
  • 打赏
  • 举报
回复
只要设置传过来时的值如: owderId="'abc','def'" 再执行以下存储过程:
Create proc procTest
@ownerId varchar(100)
AS
declare @sqlStr varchar(400)
Set @sqlStr='select departmentid,cname from carduser where username in ('+@ownerId+')'
exec(@sqlStr)
RETURN
可以实现...
desegou 2009-06-08
  • 打赏
  • 举报
回复
用变量不用参数是可以的,如where username in(OwnerId),OwnerId值等于你传过来的值
webdiyer 2009-06-08
  • 打赏
  • 举报
回复
select departmentid,cname from carduser where username in(@ownerId)
=========>
这个问题很多人犯过,包括我自己,其实in后不是一个参数,而是多个参数,一个逗号分隔的就是一个,所以你只能通过拼接sql语句的方法来实现,不能用参数。
hubblebubblepig 2009-06-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hubblebubblepig 的回复:]
你可以传个数组进来 循环拼接语句和添加参数
不过你这个语句有种让人说不出来的奇怪感觉 不知道是用来做什么的 你搜索出来的departmentid和cname 是怎样你传入的username 对应的呢?? 干吗用啊??
[/Quote]
给-->跟
hubblebubblepig 2009-06-08
  • 打赏
  • 举报
回复
你可以传个数组进来 循环拼接语句和添加参数
不过你这个语句有种让人说不出来的奇怪感觉 不知道是用来做什么的 你搜索出来的departmentid和cname 是怎样给你传入的username 对应的呢?? 干吗用啊??

62,025

社区成员

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

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

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

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