可滚动 ,可更新的 结果集

package com.enhance.jdbc;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Properties;

public class ResutSetTest {

	private String driver;
	private String url;
	private String user;
	private String pass;
	private Connection conn;
	private ResultSet rs;
	private PreparedStatement pstmt;
	public void initParam(String paramFile) throws Exception{
		Properties prop=new Properties();
		prop.load(new FileInputStream(paramFile));
		driver=prop.getProperty("driver");
		url=prop.getProperty("url");
		user=prop.getProperty("user");
		pass=prop.getProperty("pass");
	}
	//ResultSetType:控制ResulSet的类型
	//ResultSet.TYPE_FORWARD_ONLY  :控制指针只能向前移动  (jdk1.4的默认值)
	//ResultSet.TYPE_SCROLL_INSENSITIVE :指针可以自由移动,但底层数据改变不会影响ResultSet的内容
	//ResultSet.TYPE_SCROLL_SENSITIVE :指针可以自由移动,而且 底层数据改变会影响ResultSet的内容
	
	//ResultSetConcurrency:控制ResultSet的并发类型
	//ResultSet.CONCUR_READ_ONLY :指示ResultSet是只读的并发模式 (默认)
	//ResultSet.CONCUR_UPDATABLE :指示ResultSet是可更新的并发模式
	public void query(String sql) throws Exception{
		
		try{
			Class.forName(driver);
			conn=DriverManager.getConnection(url,user,pass);
			
			Statement stmt=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
			
			//加入参数设定 后 ,得到一个可自由滚动 和 可以修改  pstmt
			pstmt=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
			//ResultSet.TYPE_FORWARD_ONLY
			//ResultSet.TYPE_SCROLL_INSENSITIVE
			//ResultSet.TYPE_SCROLL_SENSITIVE
			
			rs=pstmt.executeQuery();
			
			//定位到最后
			rs.last();
			int rowCount=rs.getRow();
			ResultSetMetaData rsmd=rs.getMetaData();
			int columnCount=rsmd.getColumnCount();
			for (int j = rowCount; j >0; j--) {
				rs.absolute(j); //跳到指定的行
				for(int i=0;i<columnCount;i++){
					System.out.print(rsmd.getColumnName(i+1)+"---\t--"+rsmd.getColumnType(i+1)+"---\t--"+rs.getString(i+1)+"\t----|-");
				}
				//进行修改 
				rs.updateString(2, "飞天猪"+j);
				rs.updateRow(); //提交修改
				
				System.out.println();
			}
		}finally{
			if(rs!=null)
				rs.close();
			if(pstmt!=null)
				pstmt.close();
			if(conn!=null)
				conn.close();
		}
		
	}
	
	public static void main(String[] args) throws Exception{
		ResutSetTest rst=new ResutSetTest();
		rst.initParam("src/mysql.ini");
		rst.query("select * from my_test");
		
	}
	
	
}

你可能感兴趣的:(ResultSetType)