• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

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

qq_45879650 2021-05-18 02:55:13
...全文
246 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
你的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 + ")";
回复
@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

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

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2021-05-18 02:55
社区公告

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