Ошибка синтаксиса оператора SQL - PullRequest
0 голосов
/ 12 февраля 2012

Возникли проблемы с оператором sql для извлечения записи между двумя временными метками.Это просто дает мне исключение NullPointerException, и я думаю, что это просто синтаксическая ошибка, я искал вокруг, и я ничего не мог найти.Это оператор:

private static final String strGetRecordByDate =
    "SELECT * FROM APP.MYTABLE " +
    "WHERE MYDATE >= ?, AND MYDATE <= ? " +
    "VALUES (?, ?)";

, создающий оператор:

stmtGetRecordByDate = dbConnection.prepareStatement(strGetRecordByDate);

Исключение nullpointer отображается в stmtGetRecordByDate.clearParameters ():

public Vector getRecordByDate(Date datefrom, Date dateto){
    Vector<String> records = new Vector<String>();
    ResultSet results = null;
    java.sql.Date sqlDatefrom = new java.sql.Date(datefrom.getTime());
    java.sql.Date sqlDateto = new java.sql.Date(dateto.getTime());
    try {           
        stmtGetRecordByDate.clearParameters();
        stmtGetRecordByDate.setDate(1, sqlDatefrom);
        stmtGetRecordByDate.setDate(2, sqlDateto);
        results = stmtGetRecordByDate.executeQuery();
        while (results.next()) {
            int id = results.getInt(1);
            String entry = results.getString(2);
            records.add(entry);
        }
    } catch(SQLException sqle) {
        sqle.printStackTrace();
    }
    return records;
}

Остальныезапросы и операторы работают нормально, поэтому я знаю, что с самой базой данных все в порядке, с этим просто что-то не так.

Любые предложения будут хорошими.Спасибо!

1 Ответ

2 голосов
/ 12 февраля 2012

Вы не можете использовать VALUES в этом контексте, и у вас есть случайная запятая в предложении WHERE;Вы хотите это:

private static final String strGetRecordByDate =
        "SELECT * FROM APP.MYTABLE " +
        "WHERE MYDATE >= ? AND MYDATE <= ?";

Вы также можете использовать BETWEEN:

private static final String strGetRecordByDate =
        "SELECT * FROM APP.MYTABLE " +
        "WHERE MYDATE BETWEEN ? AND ?";

, но это просто вопрос стиля.

Я не уверен насчетJava, но вы, вероятно, получаете null в stmtGetRecordByDate из-за неверного SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...