我花了好几个小时看着什么似乎应该是完美的代码。这个方法的connection.createStatement()
版本工作正常,但是一旦我尝试将其转换为更好的connection.prepareStatement()
版本,它就会抛出MySQLSyntaxErrorException并抱怨'附近的问题?&# 39;我的查询字符串中的字符。代码发布在下面,我根本看不到它的问题。数据库字段是VARCHAR并接受字符串,因此不是问题。
public Discussion getDbDiscussionInstance(String _instanceId) throws SQLException {
String qryStr = null;
PreparedStatement myStmt = null;
ResultSet myRs = null;
// Try to build the object with existing data.
try {
qryStr = "SELECT assignment_id, discussion_id, section_id, user_id, circle_id, breakout_id, title, description, created, due FROM macb_discussions WHERE instance_id=?";
myStmt = connection.prepareStatement(qryStr);
myStmt.setString(1, _instanceId);
myRs = myStmt.executeQuery(qryStr);
if (rs.next()) {
this.discussionId = myRs.getString("discussion_id");
}
} catch (SQLException e) {
dbFunc.catchSQLException(e);
} finally {
myRs.close();
myStmt.close();
}
}
答案 0 :(得分:2)
在没有参数的情况下仅使用myStmt.executeQuery();
,您已经准备好了语句
答案 1 :(得分:0)
来自文档,
Statement.executeQuery(String sql)
PreparedStatement.executeQuery()
因此,相应地改变你的功能。
myStmt = connection.prepareStatement(qryStr);
到
myStmt = connection.prepareStatement();