Почему мой SQL-запрос не выполняется? - PullRequest
0 голосов
/ 29 марта 2011

У меня есть эта таблица:

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 ]

1 голос
/ 29 марта 2011

Вы уверены, что это ваш настоящий код? Вы должны получить сообщение об ошибке компиляции из пропущенной круглой скобки в вызове executeQuery(). Кроме того, 1990-02-15 не является String. Это ошибка, которую вы имели в виду под «но набор результатов пуст»?

1 голос
/ 29 марта 2011

1990-02-15 - это 1973, а не 15 февраля 1990 года.

Полезный подход к отладке в таких ситуациях заключается в печати оператора SQL whole до его выполнения.

Хорошим подходом было бы использовать PreparedStatement:

PreparedStatement stmt = con.prepareStatement("select code from sportman where start = ?");
stmt.setDate(1, java.sql.Date.valueOf("1990-02-15");
resultSet = stmt.executeQuery();
0 голосов
/ 29 марта 2011
resultSet = statement.executeQuery("select code from sportman "
                                + " where date ='1990-02-15'");

Это работает.

0 голосов
/ 29 марта 2011

Вы не сообщаете нам, какую СУБД вы используете, но если вы используете 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();
...