我在使用 ResultSet 呈现数据时遇到错误。我遇到此错误 java.sql.SQLException:ResultSet 来自更新。没有数据。 这是我的代码片段
ArrayList<String> arrayList = new ArrayList<String>();
Session session = null;
Connection conn = null;
CallableStatement callableStatement = null;
try {
// test
BeanLocator beanLocator = PortletBeanLocatorUtil
.getBeanLocator("Mrcos-services-portlet");
BasicDataSource bds = (BasicDataSource) beanLocator
.locate("mrcosDataSourceTarget");
conn = bds.getConnection();
String sp = "{call TINChkSP(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
callableStatement = conn.prepareCall(sp);
callableStatement.setString(1, tin);
callableStatement.setString(2, branchCode);
callableStatement.setString(3, rdoCode);
callableStatement.registerOutParameter(4, Types.VARCHAR);
callableStatement.registerOutParameter(5, Types.VARCHAR);
callableStatement.registerOutParameter(6, Types.VARCHAR);
// all other callablestatement until all the 27 params are complete)
callableStatement.executeQuery();
ResultSet resultSet = callableStatement.executeQuery();
while (resultSet.next()) {
for (int i = 0; i <= 27; i++) {
arrayList.add(resultSet.getString(i));
}
}
我的 ResultSet 的输出为 null,并给出了 java.sql.SQLException: ResultSet is from UPDATE。无数据。错误。请帮忙谢谢。
编辑
我使用 callableStatement.getString(4);
callableStatement.getString(5);
检查了每个参数的 System.out callableStatement.getString(6);
输出是:
42141
000
126
最佳答案
callableExecution.executeQuery()
之后的 OUT 参数结果应位于 callableStatement
变量中。
要在执行后获取它们,您必须通过其类型获取它们,如下所示:
String valueForOutput4 = callableStatement.getString(4);
String valueForOutput5 = callableStatement.getString(5);
String valueForOutput6 = callableStatement.getString(6);
我假设您希望将所有 27 个固定参数传递给列表中的 TINChkSP
数据库函数/过程。
我假设它们都是String
类型。
我还假设前 3 个参数不是 OUT 参数,但所有其他参数都是 OUT 或 IN/OUT。
这是一个可能的解决方案。
callableStatement.executeQuery();
// The first 3 elements are not OUT parameters (I guess)
List<String> values = Arrays.asList(tin, branchCode, rdoCode);
for (int i = 4; i <= 27; i++) {
values.add(callableStatement.getString(i));
}
System.out.println("The list: " + values.toString);
然后您可以删除 ResultSet
的使用,因为它毫无用处。
希望有帮助。
关于java - 使用 ResultSet 渲染数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39928631/