【问题标题】:Incorrect syntax near a keyword in my query我的查询中关键字附近的语法不正确
【发布时间】:2015-09-29 11:43:07
【问题描述】:

当我以这种方法运行查询时,我收到以下错误:

有异常! ';' 附近的语法不正确。

请注意,我的 courseNr 是数据库中的 VARCHAR。

我尝试在 MSSQL 中运行查询,它可以工作,但在 java 中不行。

public ArrayList<Student> getAssignedStudents(Course course){
    try {
        Statement stmt = connection.createStatement();
        ResultSet rset = stmt.executeQuery("SELECT Student.pnr, Student.namn, Registrering.betyg FROM Registrering INNER JOIN Student ON Registrering.pnr = Student.pnr WHERE betyg != NULL AND kursnr = '" + course.getCourseNr() + "';");

        ArrayList<Student> studentList = new ArrayList<Student>();
        while (rset.next()) {

            String pnr = rset.getString("pnr");
            String name = rset.getString("namn");
            String grade = rset.getString("betyg");

            Student student = new Student();
            student.setName(name);
            student.setPnr(pnr);
            student.setGrade(grade);

            studentList.add(student);

        }
        return studentList;
    } catch (Exception e) {
        System.err.println("Got an exception! ");
        System.err.println(e.getMessage());
        return null;
    }
}

【问题讨论】:

  • 我认为你最后不需要;。另外,course.getCourseNr() 生产的是什么?
  • ; 不可能是这里的问题。
  • 正好;没问题查询会变成SELECT Student.pnr, Student.namn, Registrering.betyg FROM Registrering INNER JOIN Student ON Registrering.pnr = Student.pnr WHERE betyg != NULL AND kursnr = 'values';
  • 使用 IS NOT NULL 代替 != NULL
  • 我什至尝试输入手动 CourseNr 但我得到了同样的错误,我也尝试了 IS NOT NULL 但仍然得到同样的错误:';' 附近的语法不正确。

标签: java sql sql-server


【解决方案1】:

尝试做(betyg is not NULL) 而不是你正在做的事情。
此外,请确保 course.getCourseNr() 的值不包含撇号 (')。

【讨论】:

    【解决方案2】:

    这可能是您的 kursnr 是您数据库中的一个 INT 字段。如果是这样,您应该删除单引号 ' 和 ' 并希望您一切顺利

    【讨论】:

    • 我的 kursnr 是 VARCHAR 而不是 int
    猜你喜欢
    • 1970-01-01
    • 2016-06-08
    • 2013-12-16
    • 1970-01-01
    • 2017-11-22
    • 2012-01-12
    • 2018-06-16
    • 2013-10-29
    • 2014-06-22
    相关资源
    最近更新 更多