日期:2014-05-20  浏览次数:20641 次

PreparedStatement.setNull()的问题
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);
}
}

都不能出结果,为啥?

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