我正在尝试执行一个查询,该查询返回一个名和姓串联在一起的学生,该名与搜索键参数相等。
为此,我在班级中管理与Student班级数据库相关的任何事情。
Student
执行查询时,出现以下错误:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:
怎么了?我已经检查过这是正确的使用方法 concat。
concat
name并且lastName是VARCHAR在MySQL数据库中。
name
lastName
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再次提供该字符串:
selectSQL
rs = preparedStatement.executeQuery(selectSQL);
那是不对的。您已经准备好该语句,因此当需要执行该语句时,您只需执行
rs = preparedStatement.executeQuery();