2016-02-05 36 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()'。 –

相關問題