JDBC RseultSet update 结果集更新

该代码演示了如何使用JDBC直接更新查询结果集,以提高性能。通过设置Statement为TYPE_SCROLL_SENSITIVE和CONCUR_UPDATABLE,可以对ResultSet进行修改。在循环中,获取ID,调用http服务后更新process_state列,然后提交更改。这种方式避免了额外的update语句,可能提供更好的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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");

3,更新行
                rs.updateRow();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值