public static void execute() throws SQLException{
String sql = "SELECT B.* from test_audit_data_origin b where process_state <>'1' ";
Connection conn = null;
java.sql.Statement st = null;
java.sql.ResultSet rs = null;
try{
String url = "jdbc:oracle:thin:@xxxxxxx";
String username = "xxxxxx";
String passwd = "xxxxxx";
conn = getConn(url,username,passwd);
//这里的resultset type 要设置下才可以
st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = st.executeQuery(sql);
while(rs.next()){
String id = rs.getString("ID");
System.out.println(id);
callHttp(httpUrl,id);
//更新表列process_state=1
rs.updateString("process_state", "1");
rs.updateRow();
// Thread.sleep(1000);
}
}catch(Exception e){
e.printStackTrace();
LOG.error("",e);
}finally{
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(conn!=null){
conn.close();
}
}
}
JDBC的结果集也可以更新,以前听闻过,从来没试验过,以前都是先查询结果集,然后在写个update语句,再逐行更新,感觉这种直接更新结果集理论上性能更高
操作步骤:
1.设置Statement
不过需要注意的是,要设置reset
conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
2.更新指定列
rs.updateString("process_state", "1");