java.sql.SQLException : ResultSet is from UPDATE. 无数据。

标签 java mysql

(存储过程在 MySQL Workbench 中完美运行并且还检索行)

这是我的代码:

    ConnectionManager cm = new ConnectionManager();
    java.sql.CallableStatement cstmt = null;

    try
    {
             connect = cm.getConnection();
             connect.createStatement();
             String SQL = "{call getReportDetails ('"+ emailId +"','"+password+"')}";
             cstmt = connect.prepareCall(SQL);
             rs = cstmt.executeQuery(SQL);              
             int i = 0;
             while(rs.next())
             {
                 String element1 = rs.getString("description");
                 // -- some code --
             }
   }
   catch(Exception e)
  {
       e.printStackTrace();
  } 

最佳答案

删除带有createStatement 的行。 并且(错误)不要使用 SQL 作为 executeQuery 的参数。

(带有 sql 参数的重载版本是针对直接的、非准备语句版本。)

进一步关闭语句和结果集; try-with-resources 在这里会很好。

try (CallableStatement cstmt =
        connect.prepareCall"{call getReportDetails (?, ?)}")) {
    cstmt.setString(1, emailId);
    cstmt.setString(2, password);
    try (ResultSet rs = cstmt.executeQuery()) {              
         int i = 0;
         while (rs.next())
         {
             String element1 = rs.getString("description");
             // -- some code --
         }
     }
}

在存储函数的一般情况下,您可能需要自己指定结果:

cstmt.registerOutParameter(1, Types.INTEGER);
cstmt.registerOutParameter(2, Types.VARCHAR);
rs.getString(2);

但是这里有一个结果集。

关于java.sql.SQLException : ResultSet is from UPDATE. 无数据。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24825402/

相关文章:

java - 使用不同的布局管理器不起作用

java - 高质量语言;整数列表作为输入查询

java - 从 git 项目导入/创建分支时,我得到多个源文件夹

php - 插入时 CodeIgniter 和 undefined variable

mysql - 在mysql查询中使用 'LIKE IN'

java - jni.h : no such file or directory

java - 使用 Tomcat 的 Active Directory LDAP 身份验证

php - 计算总页面浏览量的更好方法?

mysql like 查询获取 max like

php - 使用 PHP 从 URL 中获取整数值