java - 结果集来自更新。没有数据

标签 java mysql sql jdbc

问题发生在 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.

最佳答案

这是不可能的,您必须分离您的查询,或者为了获得最佳解决方案,您可以使用过程或函数。

  1. 程序应采用lectureID
  2. 返回你的结果,在你的情况下它应该是 valus 的倍数,你可以阅读 How to retrieve multiple rows from stored procedure in mysql?知道如何使用过程返回多个值

关于java - 结果集来自更新。没有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44035396/

相关文章:

php - 在不同表中的连接上得到错误的结果

Mysql:取决于不同事件的表的值总和

java - 使用 Restful Web 服务而不丢失 HTML 表示

java - 如何在selenium webdriver中的多个文本框中插入值

java - asynctask 和 java 泛型

php - 如何通过 Vagrant 运行 LAMP 堆栈

mysql - 在从游标获取数据的循环中更新游标的查询表是否合法

php - 如何使用几个查询从多个表中计算出东西?

sql - 从日期范围生成天数

java - 如何将 Java 程序转换为 .exe 文件?