我使用预准备语句来读取/写入我的数据库(SQLite)中的数据。在我的表INVENTORY
中,列null
中有paleta
值的记录(该列在表中定义为VARCHAR
)。我想选择这些记录,我试过了:
sq = "SELECT * FROM INVENTORY WHERE paleta = ? AND product = ? AND lot = ?";
//...
stm = c.prepareStatement(sq);
stm.setNull(1, java.sql.Types.VARCHAR);
stm.setString(2, "theIdOftheProduct");
stm.setString(3, "theLotOftheProduct");
ResultSet rs = stm.executeQuery();
以上查询没有返回任何内容..我删除了paleta = ?
并获取了我想要的记录。如何使用查询参数定义SELECT * FROM INVENTORY WHERE paleta is null etc..
之类的查询?< / p>
答案 0 :(得分:5)
您要做的就是写SELECT * FROM INVENTORY WHERE paleta = NULL ...
,这不起作用。
由于您实际上是在paleta
列中搜索具有常量值的行(恰好是NULL
),因此可以消除第一个查询参数并显式检查null:
sq = "SELECT * FROM INVENTORY WHERE paleta IS NULL AND product = ? AND lot = ?";
stm = c.prepareStatement(sq);
stm.setString(1, "theIdOftheProduct");
stm.setString(2, "theLotOftheProduct");