2016-02-05 33 views
0

我需要完成以下操作:如何在Java上为每个字段的变量保存查询结果?

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

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

我该怎么做?是Arraylist答案?

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

[email protected] 
[email protected] 
[email protected] 


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/[email protected]: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(); 
    } 
} 

回答

1

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

您的起点是JDBC。

Java数据库连接(JDBC)

Java数据库连接(JDBC)API是Java编程语言和各种数据库的SQL数据库和其他表格之间独立于数据库的连接的行业标准数据源,如电子表格或平面文件。 JDBC API为基于SQL的数据库访问提供调用级API。

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的webservice一次。

for(SomeBean s : v){ 

      callToYouWS(s); 

    } 
+0

我已经搞清楚了与数据库的连接。我有数据列表问题。您的代码段将非常有用。非常感谢。 @ giuseppe-marra – Rodrick

+0

我正在使用您发布的代码。但我不知道如何打印数组列表。如何打印数组列表?对不起,我是一个n00b。我添加了有问题的代码。 – Rodrick

+0

如果要打印对象,则需要覆盖对象的'toString()'。 –

相关问题