java - 即使在 java 7 和 gwt sdk 2.6.0 中有多个结果集,CallableStatement 也不返回结果集
问题描述
package com.abc.server;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import com.abc.client.modules.beans.AdminBean;
import com.abc.client.modules.beans.ResponseBean;
import com.abc.client.modules.utils.DBPool;
public class AdminServerService {
private Connection con = null;
private DBPool dbPool = new DBPool();
public ResponseBean getAllGroupDetails(int pageSize, int pageNumber) {
ResponseBean dataSet = new ResponseBean();
List<AdminBean> groupDetailsList = new ArrayList<AdminBean>();
ResultSet rs = null;
InputStream in;
CallableStatement cstmt = null;
String driverClass,url = null, username = null,password = null;
try {
in = new FileInputStream("C:\\Users\\vchag\\Desktop\\jdbc.properties");
Properties prop = new Properties();
prop.load(in);
driverClass = prop.getProperty("SQLJDBC.driver");
url = prop.getProperty("SQLJDBC.url");
username = prop.getProperty("SQLJDBC.username");
password = prop.getProperty("SQLJDBC.password");
in.close();
Class.forName(driverClass);
con = DriverManager.getConnection(url, username, password);
cstmt = con.prepareCall(stored procedure name,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
cstmt.setInt("LOGIN_USER_ID",10);
boolean isResultsAvailable = cstmt.execute();
int resultSet = 1;
// Loop through the available result sets.
while (isResultsAvailable) {
rs = cstmt.getResultSet();
if (rs != null) {
if (resultSet == 1) {
while (rs.next()) {
AdminBean result = new AdminBean();
result.setGroupId(rs.getInt(1));
result.setGroupName(rs.getString(2));
groupDetailsList.add(result);
}
dataSet.setGridData(groupDetailsList);
}
}
rs.close();
isResultsAvailable = cstmt.getMoreResults();
resultSet++;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
dbPool.closeAll(rs, cstmt, con);
}
return dataSet;
}
}
我想遍历从存储过程返回的多个结果集。当我使用应用程序调用该过程时,即使结果集可用,cstmt.execute
它也总是返回。false
我正在使用 java 7 和 smartgwt 2.6.0 sdk。当我在独立应用程序中运行相同的代码时,它工作正常,但在我的应用程序中不起作用。
解决方案
推荐阅读
- .htaccess - 为共享 Drupal 8 代码库的六个站点中的三个强制 SSL
- c++ - 获取对存储在打开窗口 OpenCV 中的矩阵的引用
- angular - 角。订阅内部服务
- r - 编辑传单 labelFormat 的源代码以编辑中断/刻度线
- c++ - 当我以 c mex 格式编写相同的代码时,矩阵乘法很耗时
- spring-boot - org.springframework.security.access.AccessDeniedException:访问被拒绝
- forms - 向 React Native Forms 添加表单验证的最佳方法
- php - 如何拆分名称并使用函数显示设置结果
- c++ - 可以从 Windows DLL 中的全局变量创建/销毁 std::threads 吗?
- c# - 连续运行多个异步任务