请问name传参有问题吗,数据查不出来

qq_45879650 2021-05-18 02:55:13
...全文
293 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫魂一号 2021-05-21
  • 打赏
  • 举报
回复
你的name最好是拼接多个sqlparameter

string namewhere = "";
for(int i= 0 ; i< name.Length; i++)
{
   namewhere += "@p" + i + "," ;
   paramlist.Add(new SqlParameter("@p" + i, name[i]));
}
namewhere  = namewhere.TrimEnd(',');
sql += " and EngineerName in(" + namewhere + ")";
爱喝茶的助手 2021-05-18
  • 打赏
  • 举报
回复
@name=string.join(",",name);

select distinct mi.EngineerName,count(*) as count from MeetImage_info as mi inner join Split(@name,',') as sp on sp.Result =mi.EngineerName

wanghui0380 2021-05-18
  • 打赏
  • 举报
回复
你不打算最终把生成sql打印出来看看么? 1.小技巧,string.join(",",name) 替换你中间那段拼接。(博客园的看到,又得把锅丢给string了) 2.最后那个别用参数化传参了,因为是string,所以最后生成的其实是 in ('1,2,3,4'),很明显他不符合in的规则,这块可以直接replace或者直接拼接 话说你这代码千万别让跟让博客园混的领导看见,他们看见了,你的奖金就得飞了
石岩Maple 2021-05-18
  • 打赏
  • 举报
回复
然后你在for循环name的时候,paramList应该放在循环里面
石岩Maple 2021-05-18
  • 打赏
  • 举报
回复
当用in的时候,sqlparameter不能这么传,得拆出来,否则入参直接当字符串处理了,比如你传1,2,3,他解析的时候不会解析成name in ('1','2','3')而是会解析成name in ('1,2,3'),所以当然查不出来

111,092

社区成员

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

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

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