JDBC Batch scroll

本文深入解析了Java JDBC中的批处理技术,通过实例展示了如何使用`ps.addBatch()`打包SQL语句,并利用`ps.executeBatch()`一次性执行多条SQL,提升数据操作效率。同时,介绍了如何实现数据的分页查询,通过设置ResultSet的类型和并发模式,获取滚动结果集并按需获取特定页码的数据。

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

1.JDBC 的批处理

  

package cj;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;



public class BatchTest {
	public static void main(String[] args) throws SQLException {
		createBatch();
	}
	
	public static void createBatch()throws SQLException{
	Connection con=null;
	PreparedStatement ps=null;
	ResultSet rs=null;
	try{
		con=JdbcUtil.getConnection();
		String sql="insert into person(id,name,birthday,money)values(?,?,?,?)";
		ps=con.prepareStatement(sql);
		for(int i=0;i<100;i++){
			 ps.setInt(1, i);
			 ps.setString(2, "name"+i);
			 ps.setDate(3, new Date(System.currentTimeMillis()));
			 ps.setInt(4, i);
			 ps.addBatch();
		}
		ps.executeBatch();
		
	}finally {
		JdbcUtil.free(rs, ps, con);
	}
		
	}
}

 

   ps.addBatch()---相当于打包
   ps.executeBatch()---将包里面的数据一起处理

 

 

2.分页

   ResultSet设置一些参数以后可以进行向前向后移动

st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

   TYPE_SCROLL_SENSITIVE
          The constant indicating the type for a ResultSet object that is scrollable and generally sensitive to changes to the data that underlies the ResultSet.

   CONCUR_READ_ONLY
          The constant indicating the concurrency mode for a ResultSet object that may NOT be updated.

 

  设置这些参数后就可以得到滚动的结果集。

 

   1.取得结果集前面的值

  

if(rs.previous()){
    System.out.print(rs.getObject("name") + "\t"+ rs.getObject("id"));
    System.out.println();
}

  

 2.将结果集定位到某个地方

  

rs.absolute(10);

 

3.分页查询

int i=0;
rs.absolute(10);
while (rs.next()&&i<10) {
       i++;
       System.out.print(rs.getObject("name") + "\t"+ rs.getObject("id"));
       System.out.println();
}

   先定位到10的位置,然后取得后面的十条语句。

   

   分页不是所有的数据库都要求这样处理,对于像mysql这样的数据库直接用limit就可以实现分页。

   select id,name from person limit 100,10

   先定位到100条的位置然后在取得10条记录。

     

  

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值