sql2005 和 ado.net2.0 的 in (not in) 查询参数问题

chrisuwen 2006-12-11 03:41:24
如题,在dataset里面生成一条查询
DELETE FROM nArticle
WHERE (nArticle_id IN (@nArticle_id))
--------------
.net2.0 自动标识为它是@nArticle_id =int 类型,
不能用 in (1,2,3) 这种方式来传输,因为(...)是动态取得的,不能确定
有多少个,所以不能写成(@a,@b...)这种方式
-------------
强制把参数类型改成string类型,执行后,传"1,2,3" 进去,提示错误
在将 nvarchar 值 '0 , 13 , 12' 转换成数据类型 int 时失败。

====================
以上按我的理解,在sql2005 里面,in()里面应按是个数组,但是怎么传参数进去呢?
...全文
142 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chrisuwen 2006-12-14
  • 打赏
  • 举报
回复
算了,不想了,用回以前老方法
command 自己生成,不用.net2.0 里面的哪个TableAdapter 自动生成涵数方式了
chrisuwen 2006-12-14
  • 打赏
  • 举报
回复
DELETE FROM nArticle
WHERE (nArticle_id IN (@nArticle_id))
--------------
系统只用生成
//int Article_id
DAO.DeleteDatanArticle_id(Article_id);
chrisuwen 2006-12-14
  • 打赏
  • 举报
回复
不知道你了解了没有,这是.net2.0 的TableAdapter 新特性
它是直接生成,没有什么自己写的代码
直接设计SQL,他生成涵数格式
liujia_0421 2006-12-14
  • 打赏
  • 举报
回复
能把代码都贴出来让我看下吗?
chrisuwen 2006-12-14
  • 打赏
  • 举报
回复
大家注意,我碰到这个问题,是在
.net2.0 里面的 TableAdapter 设计 delete .. id in (?) 的时候引起了
不能拼凑SQL的方式,只能用传参数的方式
chrisuwen 2006-12-14
  • 打赏
  • 举报
回复
我这个是.net 2.0 的dataset里面内的功能,
不能
string strSql="delete from student where sno not in("+str+")";
liujia_0421 2006-12-14
  • 打赏
  • 举报
回复
你想用参数方式来实现,似乎不行..
可以自己组织Sql语句..


换种方式,举个例子:

//参数
string str="1,10,5,7";
//组织Sql语句
string strSql="delete from student where sno not in("+str+")";

chrisuwen 2006-12-14
  • 打赏
  • 举报
回复
有人回答吗?
chrisuwen 2006-12-12
  • 打赏
  • 举报
回复
是(1,2,3)类型
在.net 1.0 的时候可以拼凑sql 进去形成 "1,2,3"
----------------
在.net2.0 的时候就不行了,它全部封装成了涵数in(?)里面
它只当成了一个int 类型的参数,不允许1,2,3这样,除非写明in(?,?,?)这样就可以
当时里面的"1,2,3"是运行时觉得的,不是设计时候决定的,只能用参数
azurebz 2006-12-11
  • 打赏
  • 举报
回复
我只知道IN里面是SQL语句
帮顶,学习

110,476

社区成员

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

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

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