首页 新闻 赞助 找找看

怎么才能执行成功?、、、、、、、、、、、

0
悬赏园豆:10 [待解决问题]

数据库里必须是(‘111111’,‘11111112’)才能执行,用sqlparameter里的参数值是(111111,1111112),但是运行时不报错,ExecuteNonQuery返回值为0

string BM=id.TrimEnd(',');
string sql = "delete from tb_bookInfo where bookBarCode in(@code)";
SqlParameter[] para ={
new SqlParameter("@code",BM)
};

if(BLL.Delete.ExecuteNonQuery(sql,para)>0)
、、、、、、--------------------------------------------

SqlCommand comm = new SqlCommand(sql,co);
comm.Parameters.AddRange(para);
try
{
int i = comm.ExecuteNonQuery();
return i; 

c#
灬丶的主页 灬丶 | 初学一级 | 园豆:6
提问于:2016-07-26 13:27
< >
分享
所有回答(6)
0

现在什么问题? 

waiter | 园豆:1000 (小虾三级) | 2016-07-26 13:29

为啥是AddRange呢   

支持(0) 反对(0) waiter | 园豆:1000 (小虾三级) | 2016-07-26 13:30

我在数据里写的delete  from tb_bookInfo where bookBarCode in('10200712131047','100011')

执行成功,

但是我vs里面的是delete  from tb_bookInfo where bookBarCode in(@code)

@code的参数值为(10200712131047,100011)

支持(0) 反对(0) 灬丶 | 园豆:6 (初学一级) | 2016-07-26 13:32

@waiter: 应该没多大关系吧

支持(0) 反对(0) 灬丶 | 园豆:6 (初学一级) | 2016-07-26 13:35

可以认为长度只有1

支持(0) 反对(0) 灬丶 | 园豆:6 (初学一级) | 2016-07-26 13:36

@灬丶: 参数应该是  “'10200712131047','100011'”

支持(0) 反对(0) waiter | 园豆:1000 (小虾三级) | 2016-07-26 15:40
0

按照 in()的要求 组好参数. 少什么加什么啊、、最多转意

Постой! | 园豆:1084 (小虾三级) | 2016-07-26 13:36

我就是不知道怎么在里面加''这个符号

支持(0) 反对(0) 灬丶 | 园豆:6 (初学一级) | 2016-07-26 13:37

@灬丶:  var arr =BM.split(',')

BM =string.Join(",", arr.Select(x=>"'"+x+"'").ToArray());

支持(0) 反对(0) Постой! | 园豆:1084 (小虾三级) | 2016-07-26 16:27

@Постой!: 我楼下都加好了。我就抄了。。

支持(0) 反对(0) Постой! | 园豆:1084 (小虾三级) | 2016-07-26 16:28
0
int[] arr = { 11, 22, 33 };
var result = string.Join(",", arr.Select(x=>"'"+x+"'").ToArray());
//'11','22','33'

 

liuxb1991 | 园豆:661 (小虾三级) | 2016-07-26 14:58
0

多个的这种不要用参数形式,比如delete from tb_bookInfo where bookBarCode in(@code),如果一个可能不出错,多于1个肯定出错。。。。

顾晓北 | 园豆:10844 (专家六级) | 2016-07-26 15:22
0

反正Sqlserver 是不支持这样的写法。单独一个值不报错。多个肯定报错。。

delete from tb_bookInfo where bookBarCode in select mysplit(@code) 

自己写个表集函数mysplit,把参数化为一个单一字段的表即可。

或者用系统函数Charindex,判断是否存在的方式

delete from tb_bookInfo where Charindex(convert(varchar,bookBarCode),@code,0)>0

wwwcys1989 | 园豆:204 (菜鸟二级) | 2016-07-28 18:34
0

这需要动态SQL

DECLARE @code NVARCHAR='11,22,33,55';
declare   @sqls nvarchar(4000);
SET @sqls=N'delete from tb_bookInfo where bookBarCode in('+@code+')'
Exec sp_executesql @sqls;

 

alci | 园豆:233 (菜鸟二级) | 2016-09-08 11:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册