java - 使用 PreparedStatement 时出现 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException

标签 java mysql sql jdbc

我正在尝试执行一个查询,该查询返回一个学生的名字和姓氏连接起来等于搜索键参数。

为此,我在类(class)中执行此操作,为我的 Student 类(class)管理与数据库相关的所有内容。

执行查询时出现以下错误:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:

怎么了?我已经检查过这是正确的 way to use 连接

namelastName 是 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();

关于java - 使用 PreparedStatement 时出现 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33179378/

相关文章:

php - 如何使用 PHP 创建数百个具有不同 MySQL 数据的动态页面

mysql - 仅检索关节具有依赖性的行

sql - 方括号在表达式中按预期运行

Java将所有pdf文件字节写入.dat文件中

java - NullPointerException:无法列出目录中的文件

mysql - Orbeon 表单和 mysql : JDBC naming context problem

mysql - 从 docker-compose 中的 ASP.NET Core 2 Web 应用程序连接到 MySql 8

java - ModelJUnit运行测试一段时间

java - Debian linux Tomcat 8 全新安装在端口 8080 上没有响应

c# - 行到列的转换