我有这张桌子:
sportman
{
code int primary key,
date Date.
}
包含值
code 10, 30, 50.
date 1990-02-15, 1999-02-15, 2010-02-15.
我在NetBeans中编写了这个查询:
resultSet = statement.executeQuery("select code from sportman "
+ "where date = 1990-02-15";
但结果集为空。有什么问题,如何解决?
while(resultSet.next())
{
x = resultSet.getString("code");
}
答案 0 :(得分:1)
1990-02-15
是1973
而不是1990年2月15日。
在这些情况下,一种有用的调试方法是在执行之前打印整个 SQL语句。
一个好方法是使用PreparedStatement
:
PreparedStatement stmt = con.prepareStatement("select code from sportman where start = ?");
stmt.setDate(1, java.sql.Date.valueOf("1990-02-15");
resultSet = stmt.executeQuery();
答案 1 :(得分:1)
您确定这是您的实际代码吗?您应该从错过的括号到executeQuery()
调用收到编译错误。此外,1990-02-15
不是String
。这个错误是什么意思“但结果集是空的”?
答案 2 :(得分:0)
您没有告诉我们您使用的是哪个DBMS,但如果您使用的是Oracle,那么您可能需要切断属于Oracle DATE
列的时间部分:
PreparedStatement stmt = con.prepareStatement("select code from sportman where trunc(start) = ?");
stmt.setDate(1, java.sql.Date.valueOf("1990-02-15");
resultSet = stmt.executeQuery();
答案 3 :(得分:0)
resultSet = statement.executeQuery("select code from sportman "
+ " where date ='1990-02-15'");
这很有效。