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的话,很可能是由于参数索引位置设置不正确的问题!