使用 ResultSet 呈现数据时出错
Posted
技术标签:
【中文标题】使用 ResultSet 呈现数据时出错【英文标题】:Error in rendering data using ResultSet 【发布时间】:2016-10-08 04:18:05 【问题描述】:我在。我遇到了这个错误 java.sql.SQLException: ResultSet is from UPDATE。没有数据。 这是我的代码 sn-p
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);
callableStatement.getString(6);
输出为:42141
000
126
【问题讨论】:
【参考方案1】:您的 OUT 参数的结果,在您的 callableExecution.executeQuery()
之后应该在 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
的使用,因为它没有用。
希望对你有帮助。
【讨论】:
感谢您的回答。是的,我已经尝试过了,它奏效了!但我需要的是他们的名单。我怎样才能把它们放在数组列表中?我可以从 1 到 1 获取值,但是还有其他方法可以获取值列表吗?我知道 resultSet 是一种方式,但它对我不起作用,因为 java.sql.SQLException:ResultSet 来自 UPDATE。没有数据。错误:( ResultSet 没有数据,因为它正在调用函数/过程。您是否在 OUT 参数中一一看到您的值?他们看起来怎么样?也许您可以在问题中添加它,以便我检查并尝试帮助您。简而言之,我想您可以将它们拆分并放入列表中。 是的,我可以获得输出参数的值。嗯,我怎样才能拆分它们并将它们放入列表中? 请在问题的末尾添加您从要迭代的 OUT 参数中获得的字符串。如果它被逗号分隔,你可以这样做: List以上是关于使用 ResultSet 呈现数据时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 express 和 axios 反应应用程序在呈现数据时出错