您的SQL语法有错误,请检查手册JAVA

时间:2019-01-28 13:31:13

标签: java mysql sql

尝试运行此代码时出现此错误 您有一个错误 您的SQL语法;检查与您的MySQL服务器版本相对应的手册 在第1行的“ And StatusMembership = Active”附近使用正确的语法

public boolean checkLenderToIfExists(BorrowedBook borrowedBook) throws SQLException {
    try {
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM library_students.student WHERE StudentID='"+ borrowedBook.getLenderTo()+"'And Permission=1"+"'And StatusMembership='Active'");
        if (!(rs.next())) {
            return false;
        }
        rs.close();
        return true;
    } catch (SQLException ex) {
        ex.printStackTrace();
        return false;
    }

2 个答案:

答案 0 :(得分:4)

您正在生成下一个查询:

SELECT * FROM library_students.student WHERE StudentID='10'And 
Permission=1'And StatusMembership='Active'

错误可能是由于Permission=1'And

中的单引号引起的

答案 1 :(得分:2)

这可能是由于查询中的间隔而发生的。使用PreparedStatement尝试以下格式:

PreparedStatement preparedStatement = conn.prepareStatement("SELECT * FROM "
        + "library_students.student WHERE StudentID= ? "
        + "AND Permission=1 AND StatusMembership='Active'");
preparedStatement.setInt(1, borrowedBook.getLenderTo());
ResultSet rs = preparedStatement.executeQuery();

此外,here's还提供了一些有关为何在这种情况下使用PreparedStatement的奖励。