java - 如何在Java中保存每个字段的变量查询结果?

标签 java sql oracle web-services arraylist

我需要完成以下任务:

1.- 将查询结果的每个字段保存在不同的变量上(Oracle DB)。
查询结果可能多 1 行(平均 5 行)。
2.- 为每一行调用一个 WebService。
4.- 等待 WebService 答复,然后重复该过程。

我认为保存 1 行结果然后调用 WebService 很容易,但问题是当查询结果抛出超过 1 行时。

我该怎么做? Arraylist 是答案吗?

编辑:我正在使用以下代码。如何打印数组列表以查看连接是否正常工作? 如果我运行这个我得到:

com.packagename.SomeBean@1d251891
com.packagename.SomeBean@48140564
com.packagename.SomeBean@58ceff1


Connection con = null;
Statement stmt = null;
ResultSet rs = null;

List<SomeBean> v = new ArrayList<SomeBean>();

String query = "select * from table where ROWNUM BETWEEN 1 and 3";

try 
{
  Class.forName("oracle.jdbc.driver.OracleDriver");
      con = DriverManager.getConnection("jdbc:oracle:thin:user/pass@localhost:port:SID");
      stmt = con.createStatement();     
      rs = stmt.executeQuery(query);

  while( rs.next() ){             

    SomeBean n = new SomeBean();
    n.setColumn1(rs.getInt("column1"));
    n.setColumn2(rs.getString("column2"));
    n.setColumn3(rs.getString("column3"));
    n.setColumn4(rs.getInt("column4"));
    n.setColumn5(rs.getString("column5"));
    n.setColumn6(rs.getString("column6"));
    n.setColumn7(rs.getString("column7"));
    ...
    v.add(n);       
    }

  for(SomeBean s : v){
    System.out.println(s);
  }

} catch (ClassNotFoundException e) {
      e.printStackTrace();
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    try {
        stmt.close();
        con.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

最佳答案

回答你的问题是相当困难的。 但我可以给你一些提示。

您的起点是 JDBC。

The Java Database Connectivity (JDBC)

The Java Database Connectivity (JDBC) API is the industry standard for database-independent connectivity between the Java programming language and a wide range of databases SQL databases and other tabular data sources, such as spreadsheets or flat files. The JDBC API provides a call-level API for SQL-based database access.

The Java Database Connectivity (JDBC)

一旦您能够建立与数据库的连接,此代码段可以帮助您回答您的问题。

    // start connection
    List<SomeBean> v = new ArrayList<SomeBean>();
    Statement st;
    try 
    {
        st = conn.createStatement();

        ResultSet rs = st.executeQuery(sql);        
        while( rs.next() ){             

                SomeBean n = new SomeBean();
                n.setFirstField(rs.getInt("firstfield"));
                n.setSecondField(rs.getString("secondfield"));

                ...
                ...

                v.add(n);
        }
    } 
    catch (SQLException e) 
    {
        e.printStackTrace();
    }

    // close connection

一旦获得了 Bean 集合,只需编写一个 for 循环,为每个 Bean 调用一次 Web 服务。

    for(SomeBean s : v){

            callToYouWS(s);

    }

关于java - 如何在Java中保存每个字段的变量查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35225915/

相关文章:

java - 更新 APIGEE 实体时出错

java - 如何设置一个使用 sqlite4java 的简单 gradle 项目?

mysql - 优化sql搜索时间

mysql - timestampdiff() 参数错误

oracle - 具有多个 IN 参数的存储过程

regex - PL/SQL 正则表达式匹配不在引号内的逗号

java - 安卓/Java : convert UTF-8 to UTF-16

java - 如何在 Java 的 JSON 字符串中找到指定的名称及其值?

sql - MySQL LEFT JOIN RAND() - 奇怪的行为?还是我做错了什么?

sql - 我如何在具有 "single-group group function"的 SELECT 子句中使用两个字段