JDBC Batch scroll

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条记录。

     

  

  

你可能感兴趣的:(scroll)