我需要完成以下任务:
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.
一旦您能够建立与数据库的连接,此代码段可以帮助您回答您的问题。
// 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/