首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ResultSet来自UPDATE。无数据

ResultSet来自UPDATE。无数据
EN

Stack Overflow用户
提问于 2017-05-17 21:56:16
回答 3查看 5.4K关注 0票数 1

当executeQuery函数运行时,该sql语句正确工作,并在sql编辑器上运行时给出正确的结果。当它在jdbc上运行时,它不会被执行。该连接接受多个查询。

代码语言:javascript
复制
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。没有数据。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-17 22:06:40

这是不可能的,你必须分开你的查询,为了最好的解决方案,你可以使用的过程或功能。

  1. 程序应采取lectureID
  2. 返回您的结果,在您的情况下它应该是倍数值,您可以阅读如何从mysql中的存储过程中检索多行?来了解如何使用过程返回多个值。
票数 1
EN

Stack Overflow用户

发布于 2017-05-17 22:07:59

我不熟悉JDBC,但快速搜索表明您应该使用execute而不是executeQuery

如果查询返回的第一个对象是ResultSet对象,则返回true。如果查询可以返回一个或多个ResultSet对象,则使用此方法。通过反复调用ResultSet检索从查询返回的Statement.getResultSet对象。

查询

票数 0
EN

Stack Overflow用户

发布于 2017-05-18 07:39:35

看看下面的文档,它解释了如何使用execute()而不是executeQuery(),然后在得到的结果集上触发getResultSet()

整个方法是将查询更改为存储过程,并通过CallableStatement调用该过程。

文件表明:

尽管CallableStatement支持调用任何语句执行方法(executeUpdate()、executeQuery()或execute()),但调用的最灵活的方法是execute(),因为如果存储过程返回结果集,您不需要提前知道。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44035396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档