gpt4 book ai didi

java - 使用 ResultSet 渲染数据时出错

转载 作者:行者123 更新时间:2023-11-30 08:32:44 24 4
gpt4 key购买 nike

我在使用 ResultSet 呈现数据时遇到错误。我有这个错误 java.sql.SQLException: ResultSet is from UPDATE。没有数据。这是我的代码片段

    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);
检查了每个参数的 System.out callableStatement.getString(5);
callableStatement.getString(6);

输出是:
42141
000
126

最佳答案

您的 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 的使用,因为它将毫无用处。

希望对您有所帮助。

关于java - 使用 ResultSet 渲染数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39928631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com