问题发生在 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 is from UPDATE. No Data.
最佳答案
这是不可能的,您必须分离您的查询,或者为了获得最佳解决方案,您可以使用过程或函数。
- 程序应采用
lectureID
- 返回你的结果,在你的情况下它应该是 valus 的倍数,你可以阅读 How to retrieve multiple rows from stored procedure in mysql?知道如何使用过程返回多个值
关于java - 结果集来自更新。没有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44035396/