select * from aaa where (name=? or name is null) and (code=? or code is null)sql如上
参数来自request.getParameter
参数name和code都有可能为空
写法1:
for (int t=0;t<paras.length;t++)
{
String strPara = null;
if (!paras[t].equals(""))
{
strPara = paras[t];
}
out.println(strPara);
pstmt.setObject(t+1,strPara,Types.VARCHAR);
}
写法2:
for (int t=0;t<paras.length;t++)
{
if (!paras[t].equals(""))
{
pstmt.setString(t+1,paras[t]);
}
else
{
pstmt.setNull(t+1,Types.VARCHAR);
}
}都不能出结果,为啥?

解决方案 »

  1.   

    如果paras数据长度不为2的话,很可能是由于参数索引位置设置不正确的问题!
      

  2.   

    长度是对的,参数我也打出来看过
    可能是aaa,null,或者null ,bbb,或者aaa,bbb,或者null,null
    但是除非aaa,bbb进去可以查出对应记录,其他有null的情况下,都不出记录
      

  3.   

    如果是这样的话,你应该动态组织查询语句,因为name=null这样的查询语句,不会返回任何结果.
      

  4.   

    抱歉,刚才看了下,语句写错了,应该是name=? and ? is null才对,结帖了