【发布时间】:2012-08-11 06:53:06
【问题描述】:
MySQL 使用“IS NULL”而不是“NULL”,那么我如何绑定变量来实现相同的效果?
现在我尝试了这个
selectStmt.setNull( 2, java.sql.Types.VARCHAR );
当我打印“java.sql.Types.VARCHAR”时显示值 = 12?如果是这样,如何在preparedstatment中设置“IS NULL”?
更多详情:
即,如果我在输入中有 string = "",我有兴趣在 (MySQL) 中查询 null。所以逻辑是这样的,
Connection c = SQLCon.connect();
PreparedStatement selectStmt = c.prepareStatement( "select * from "
+ TableName
+ " where P = ? AND M = ? AND PR = ? AND DR = ? " );
if ( P.trim().equals( "" ) )
{
selectStmt.setNull( 1, java.sql.Types.VARCHAR );
} else
{
selectStmt.setString( 1, P );
}
if ( M.trim().equals( "" ) )
{
selectStmt.setNull( 2, java.sql.Types.VARCHAR );
} else
{
selectStmt.setString( 2, M );
}
请指教
【问题讨论】:
-
如果第二个绑定变量是 VARCHAR 列,这确实是您将第二个绑定变量设置为 null 的方式。你有什么问题?
-
@PaulTomblin :它是 varchar 列,但查询没有获取我需要的结果。
-
不要使用空字符串作为 null。为空值使用空值。它们是两种完全不同的动物。
标签: java mysql data-binding prepared-statement