Java SQL语句语法错误
sql语句检索两个时间戳之间的记录时遇到问题。这只是给了我一个NullPointerException,我想这只是一个语法错误,我一直在搜索,但什么都找不到。声明如下: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
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:YourstmtGetRecordByDate.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 ?";