在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