我正在尝试执行一个查询,该查询返回一个学生,其姓名和姓氏串联在一起等于搜索键参数。
为此,我在我的类中执行此操作,该类为我的Student
类管理与数据库有关的任何事情。
执行查询时,出现以下错误:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:
怎么了?我检查过正确的way to use concat
。name
和lastName
在mysql数据库中为VARCHAR
。
public static Student findStudent(String key) {
if (key == null) return null;
PreparedStatement preparedStatement = null;
ResultSet rs = null;
String selectSQL = "select * from project.students where concat(name, lastName) = ? ;";
try {
dbConnection = getDBConnection();
preparedStatement = dbConnection.prepareStatement(selectSQL);
preparedStatement.setString(1, key);
Student student = null;
rs = preparedStatement.executeQuery(selectSQL);
if (rs.next()) {
StudentDB.setStudentAttributes(student, rs);
}
return student;
} catch(SQLException e) {
e.printStackTrace();
} finally {
close();
try {
if (preparedStatement != null) preparedStatement.close();
if (rs != null) rs.close();
} catch(SQLException e) {
e.printStackTrace();
}
}
return null;
}
最佳答案
您的问题是您准备的陈述
preparedStatement = dbConnection.prepareStatement(selectSQL);
正确,但是当您尝试执行PreparedStatement时,再次提供了
selectSQL
字符串:rs = preparedStatement.executeQuery(selectSQL);
那是不对的。您已经准备好该语句,因此当需要执行该语句时,您只需执行
rs = preparedStatement.executeQuery();