【发布时间】:2017-05-17 21:56:16
【问题描述】:
executeQuery 函数运行时出现问题,sql 语句工作正常,在 sql 编辑器上运行时给出正确的结果。当它在 jdbc 上运行时,它不会被执行。该连接接受多个查询。
String query = "set @countOfLectureGrade = (SELECT Count(goc.Affect) FROM GradeOfCourse goc WHERE goc.LectureID = ?);"
+ "SELECT u.SchoolID, u.Name, u.Surname, u.Role, u.Email, "
+ "CASE WHEN @countOfLecture = 0 then 0 "
+ "ELSE AVG(0.01 * goc.Affect * gos.Grade) "
+ "END AS Average "
+ "FROM GradeOfCourse goc, GradeOfStudent gos, User u, CourseOfStudent cos "
+ "WHERE "
+ "(gos.CourseGradeID = goc.GradeID AND u.SchoolID = gos.StudentID AND goc.LectureID = ?) "
+ "OR (u.SchoolID = cos.SchoolID AND cos.LectureID = ? AND @countOfLectureGrade = 0) "
+ "GROUP BY u.SchoolID;";
try {
connection = super.getConnection();
PreparedStatement sqlStatement = connection.prepareStatement(query);
sqlStatement.setInt(1, lectureID);
sqlStatement.setInt(2, lectureID);
sqlStatement.setInt(3, lectureID);
ResultSet resultSet = sqlStatement.executeQuery();
java.sql.SQLException: ResultSet 来自 UPDATE。没有数据。
【问题讨论】:
-
为什么要运行 2 个查询?
-
@MinhKieu 因为,我不能在单个查询中做到这一点,我尝试但找不到解决方案,然后我用两个查询解决了
-
为什么不运行存储 java 的第一个查询并将其传递给第二个查询,就像对 .setInt(4, countOfLectureGrade) 所做的那样?我怀疑 JDBC 驱动程序不知道您要返回哪个结果集?