问题描述
if(tiaoma.Length!=12){strdr="selectc.productname品种,b.batch批号,b.casecode大袋码,a.boxcode小袋码,b.impdate生产时间fromWlcLine_boxCodea,WlcLine_caseCodeb,WlcBs_Productcwherea.boxcode="+tiaoma+"andb.casecode=a.casecodeandc.productcode=b.productcode";}else{strdr="selectc.productname品种,b.batch批号,b.casecode大袋码,a.boxcode小袋码,b.impdate生产时间fromWlcLine_boxCodea,WlcLine_caseCodeb,WlcBs_Productcwhereb.casecode="+tiaoma+"andb.casecode=a.casecodeandc.productcode=b.productcode";}command.CommandText=strdr;//objcon.Open();//SqlDataReadersdr=command.ExecuteReader();//if(Convert.ToInt32(dr)>0){if(sdr.Read())//出错{Label2.Text="品种:"+sdr["品种"].ToString();//Label3.Text="批号:"+sdr["批号"].ToString();Label4.Text="生产时间:"+sdr["生产时间"].ToString();Label5.Text="大袋码:"+sdr["大袋码"].ToString();Label6.Text="小袋码:"+sdr["小袋码"].ToString();Label7.Text="纯度:"+sdr["品种"].ToString();}}else{Label1.Text="输入的数字身份码错误请查验后重新输入!"+dr+""+tiaoma;//}=========================================================简单的查询web页面:条码有10,12,16位,都是char(30)类型的,都在一个数据表中,12位和16位的都可以正常查询,10位的报错,哪位高人点拨点拨,实在是没招了。
解决方案
解决方案二:
目测前后两个sql语句根本是一模一样的不明白你到底纠结在哪里
解决方案三:
if(tiaoma.Length!=12)if(Convert.ToInt32(dr)>0)没有给出tiaoma和dr的定义,也无法知道你这都是在判断神马代码也不完整,描述也不清楚
解决方案四:
此外,执行sdr.Read()之前,不先判断里面是否有行就去读取吗?把sql语句提出来,放数据库里执行,看到底能不能查询到数据
解决方案五:
10位的条码输进去报错,12位,16位都可正确查询
解决方案六:
引用4楼hzy111的回复:
10位的条码输进去报错,12位,16位都可正确查询
一个是boxcode一个是casecode应该是某个长度的问题
解决方案七:
我感觉不像是代码的问题,哪位高人遇到过指点一下。相同的数据库,相同的代码,12、16位的条码查询可以,10位的条码查询失败!
解决方案八:
挂着明天结贴,如果没答案分给靠前的兄弟。
解决方案九:
引用6楼hzy111的回复:
我感觉不像是代码的问题,哪位高人遇到过指点一下。相同的数据库,相同的代码,12、16位的条码查询可以,10位的条码查询失败!
查询失败可能是因为你数据库里根本没有对应的10位条码数据你应该把sql语句放数据库里执行一下,先确定确实有数据,再纠结代码是否有问题而且我已经指出了你一个很严重的BUG:如果没有数据,也去执行read,然后直接报错,执行read之前根本没判断到底是否有无数据
解决方案十:
引用7楼hzy111的回复:
挂着明天结贴,如果没答案分给靠前的兄弟。
看5楼
解决方案十一:
if(tiaoma.Length!=12){strdr="selectc.productname品种,b.batch批号,b.casecode大袋码,a.boxcode小袋码,b.impdate生产时间fromWlcLine_boxCodea,WlcLine_caseCodeb,WlcBs_Productcwherea.boxcode=‘"+tiaoma+"’andb.casecode=a.casecodeandc.productcode=b.productcode";}else{strdr="selectc.productname品种,b.batch批号,b.casecode大袋码,a.boxcode小袋码,b.impdate生产时间fromWlcLine_boxCodea,WlcLine_caseCodeb,WlcBs_Productcwhereb.casecode=‘"+tiaoma+"’andb.casecode=a.casecodeandc.productcode=b.productcode";}
1、tiaoma用单引号引起来'"+tiaoma+"'2、Convert.ToInt32(dr)>0这是麽意思?!判断用dr!=null