Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL语句语法错误_Java_Sql_Syntax - Fatal编程技术网

Java SQL语句语法错误

Java SQL语句语法错误,java,sql,syntax,Java,Sql,Syntax,sql语句检索两个时间戳之间的记录时遇到问题。这只是给了我一个NullPointerException,我想这只是一个语法错误,我一直在搜索,但什么都找不到。声明如下: private static final String strGetRecordByDate = "SELECT * FROM APP.MYTABLE " + "WHERE MYDATE >= ?, AND MYDATE <= ? " + "VALUES (?, ?)"; stmtGetRe

sql语句检索两个时间戳之间的记录时遇到问题。这只是给了我一个NullPointerException,我想这只是一个语法错误,我一直在搜索,但什么都找不到。声明如下:

private static final String strGetRecordByDate =
    "SELECT * FROM APP.MYTABLE " +
    "WHERE MYDATE >= ?, AND MYDATE <= ? " +
    "VALUES (?, ?)";
stmtGetRecordByDate = dbConnection.prepareStatement(strGetRecordByDate);
stmtGetRecordByDate.clearParameters()上显示nullpointer异常:

public Vector getRecordByDate(日期从,日期到){
向量记录=新向量();
ResultSet results=null;
java.sql.Date sqlDatefrom=new java.sql.Date(datefrom.getTime());
java.sql.Date sqlDateto=new java.sql.Date(dateto.getTime());
试试{
stmtGetRecordByDate.clearParameters();
stmtGetRecordByDate.setDate(1,sqlDatefrom);
setDate(2,sqlDateto);
结果=stmtGetRecordByDate.executeQuery();
while(results.next()){
int id=results.getInt(1);
String entry=results.getString(2);
记录。添加(条目);
}
}捕获(SQLException sqle){
printStackTrace();
}
退货记录;
}
其余的查询和语句工作正常,所以我知道数据库本身是正常的,只是这个有点问题

任何建议都很好。
谢谢

在该上下文中不能使用
,并且WHERE子句中有一个多余的逗号;你想要这个:

private static final String strGetRecordByDate =
        "SELECT * FROM APP.MYTABLE " +
        "WHERE MYDATE >= ? AND MYDATE <= ?";
但这只是风格的问题


我不确定Java方面的事情,但您可能会在
stmtGetRecordByDate
中得到一个
null
,因为您的SQL无效。

哈哈,是的,很抱歉,这个错误,不在代码中,只是一个错误类型。如果我不能使用值,我可以在哪里使用参数?@stroduces:Your
stmtGetRecordByDate.setDate
调用将值绑定到占位符<代码>值通常仅用于插入。奇怪的是,它不再给出错误,但输出向量总是空的,但我知道那里应该有值。嗯。你的说法是对的,我想我的代码有缺陷。谢谢@stroduces添加到@mu已经提到的内容中,在SELECT语句中使用
values()
,在语法上是不正确的。SELECT语句中的“?”用于设置
PreparedStatement
中参数的值。
private static final String strGetRecordByDate =
        "SELECT * FROM APP.MYTABLE " +
        "WHERE MYDATE >= ? AND MYDATE <= ?";
private static final String strGetRecordByDate =
        "SELECT * FROM APP.MYTABLE " +
        "WHERE MYDATE BETWEEN ? AND ?";