在java sql准备语句中使用时间戳

我想在Java中使用准备语句执行选择查询。 在Where子句中检查Timestamp类型列上的条件,如下所示。在java sql准备语句中使用时间戳

String selectSQL = "select * from db.keycontacts WHERE CREATEDDATETIME>?"; 

PreparedStatement preparedStatement = connect.prepareStatement(selectSQL);

preparedStatement.setTimestamp(1, convertStrToTimestamp(lastSyncTimeStamp));

resultSet = preparedStatement.executeQuery(selectSQL);

//函数在执行查询时,得到以下异常timestampString转换的java.sql.Timestamp

private java.sql.Timestamp convertStrToTimestamp(String dateTimeStr){ 

java.sql.Timestamp timeStampDate = null;

try {

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//2015-05-11 18:26:55

java.util.Date dateObj = (java.util.Date)formatter.parse(dateTimeStr);

timeStampDate = new Timestamp(dateObj.getTime());

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return timeStampDate;

}

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1 

那么究竟在这里哪里出错?

在此先感谢。

回答:

resultSet = preparedStatement.executeQuery(selectSQL); 

取出参数并切换到

resultSet = preparedStatement.executeQuery(); 

preparedStatement.executeQuery(selectSQL);通过查询优先于你connect.prepareStatement(selectSQL);通过查询这是简单的字符串("select * from db.keycontacts WHERE CREATEDDATETIME>?"),其中您可以设置任何参数,因此存在语法错误?

,你也可以说这个语句准备在PreparedStatement preparedStatement = connect.prepareStatement(selectSQL);,因为executeQuery()从Statement继承,它将执行查询而不准备它。

以上是 在java sql准备语句中使用时间戳 的全部内容, 来源链接: utcz.com/qa/262564.html

回到顶部