为什么我的SQL查询失败?

时间:2011-03-29 14:27:28

标签: java sql netbeans resultset

我有这张桌子:

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");
                      }

4 个答案:

答案 0 :(得分:1)

1990-02-151973而不是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'");

这很有效。