java - 如何从 Java 中的 Web 服务返回结果集

标签 java web-services nullpointerexception resultset

我正在编写一个应用程序,在其中创建 Web 服务。我正在创建一个操作(方法),它从结果集中的数据库表中检索数据库表值。因此我们不能直接在 Web 服务中返回结果集值。我正在创建一个包含结果集中值的类。我返回新创建类的对象 [] 而不是结果集,如下所示:

 public HistoryInfoByUser[] get_HistoryInfoByUser(@WebParam(name = "email_Id")
  String email_Id) throws Exception{

        HistoryInfoByUser[] historyIn = null;
        if (conn != null) {
        CallableStatement cst = conn.prepareCall("{call sp_xxxx(?)}",ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            cst.setString(1, email_Id);
            ResultSet resultSet = cst.executeQuery();
             int rowCount = resultSet.getRow();

           historyIn = new HistoryInfoByUser[rowCount];

          while (resultSet.next())
             {

                historyIn[rowCounter].setId(rowCounter);                               
           historyIn[rowCounter].setStartTime((java.util.Date)resultSet.getObject(1));
                historyIn[rowCounter].setType((String) resultSet.getObject(2));


             rowCounter++;
            }
        }
        return historyIn;
    }

但是当尝试在 Web 服务客户端中访问这些值时,它给出了 java.lang.NullPointerException。

这是我在 Web 服务客户端中用于访问结果集的代码 值(value)观:

    public void get_HistoryInfoByUser(String email_Id) 
{      
               service = new DBService();

               port = service.getDBPort();

    try {

        List<HistoryInfoByUser> historyIn = port.getHistoryInfoByUser(email_Id);
      Iterator iterator = historyIn.iterator();
            while (iterator.hasNext()){
              System.out.print(iterator.next()+" ");  
            }
      } catch (Exception_Exception ex) {
        Logger.getLogger(DataBaseWSHelper.class.getName()).log(Level.SEVERE, null, ex);
    }

 }

我尝试通过返回新创建类的对象 (HistoryInfoByUser) 而不是 object[] (HistoryInfoByUser[]) 来返回单行值。它适用于单个对象,但在我使用对象 [] 时会出现 NullPointerException。我没有找到任何方法来帮助我克服访问结果集值的问题。

在此先感谢您提出的所有宝贵建议,这些建议将帮助我解决这个问题。

最佳答案

返回 WebRowSet从您的网络服务:

import javax.sql.rowset.WebRowSet;
import com.sun.rowset.WebRowSetImpl; // Reference implementation
...
// get ResultSet rs from db
WebRowSet wrs = new WebRowSetImpl();
wrs.populate(rs);
// return wrs from web service

请注意,您的 JDBC 提供程序可能会提供特定于供应商的 WebRowSet 实现。您可以使用它代替引用实现。

关于java - 如何从 Java 中的 Web 服务返回结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734645/

相关文章:

java - Spring-MVC 中的 JSP 渲染 HTML

java - 使用 Google Cloud Storage 的客户端库可恢复上传

java - 如何获得正确的编码?

asp.net - 如何使启用 session 的 ASP.NET Web 服务与不同域中的 ajax 客户端一起工作?

java - 我想获得用户的唯一ID。我如何使用 getKey 方法获取它

java - 将 java -version 的结果打印到文件 -> 为什么结果文件为空?

java.lang.LinkageError : loader constraint violation in interface itable initialization: when resolving method

java - 在一台计算机上测试大量 Web 服务

java - printStackTrace 到 java.util.logging.Logger

android - 单击 Android Spinner 仅在模拟器上抛出 NullPointerException