ResultSet对象
	功能: 当执行的语句是查询语句时, resultSet对象用于封装查询结果.
	
	方法:
		boolean next() 该方法让结果集中的指针(游标)往下移动一行.并且判断改行是否有数据。 有返回true,没有返回false
		String getString(int cloumnCount) 从当前指向的行中获得String 类型的数据.  根据列所在的索引位置取.
		String getString(String columnName) 从当前指向的行中获得String 类型的数据. 根据列名取.
	getXXX系列方法 有很多种, 没对针对的都是数据库中的不同类型.
		数据库中的类型根getXXX方法如何对应?
			数据库类型			对应的Get方法
-------------------------------------------------
			char/varchar         getString
			int					 getInt
			bigint				 getLong
			float/double    	 getFloat/getDouble
			datetime/timestamp   getDate
			
------------------------------------------------------------------------------------------------------------------	
package cn.itcast.d_rs; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import org.junit.Test; //ResultSet细节 //功能: 封装结果集数据 //操作: 如何获得(取出)结果 //结论: //1. next方法,向下移动并判断是否有内容 //2. getXXX方法,根据列索引或列名获得列的内容 public class Demo { @Test public void fun1() throws Exception{ //1 注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2 获得连接 Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/day05", "root", "1234"); //3 创建Statement Statement st = conn.createStatement(); //4 书写sql String sql = "select * from t_user" ; //5 执行sql ResultSet rs = st.executeQuery(sql); //向下移动一行,并判断 while(rs.next()){ //有数据 //取数据:getXXX int id = rs.getInt(1);//获得第一列的值 //int id rs.getInt("id");// 获得id列的值 String name = rs.getString(2);//获得第二列的值 int age = rs.getInt(3);//获得第三列的值 System.out.println(id+"==>"+name+"==>"+age); } //6关闭资源 st.close(); conn.close(); } /* 数据库类型 java类型 int int double double decimal double char String varchar String datetime Date timestamp Timestamp/Date */ }
		
			
8.ResultSet(了解内容)
	结果集滚动;
	滚动指的就是指针的位置不仅可以向下,还可以任意控制.
		涉及的方法如下:
			 boolean absolute(int row)  将指针移动到指定位置. 参数就是位置. 第一行的位置是1. 如果填写负数表示倒数.例如-1=>最后一行. 如果移动超出范围将会返回false.
			 void afterLast()  将光标移动到此 ResultSet 对象的末尾,正好位于最后一行之后。 (该行没有数据)
			 void beforeFirst()   将光标移动到此 ResultSet 对象的开头,正好位于第一行之前。(result的初始位置)
			 boolean first()   将光标移动到第一行
			 boolean last()    将光标移动到最后一行
			 boolean next()   光标向下移动一行.
			 boolean previous()  next反方向移动.向上移动一行.
//--------------------------------------------------------			 
	使用resultSet修改记录.
		默认情况下resultSet 是不能反向修改数据库中的记录的.  需要在创建Statement对象时, 通过指定参数 创建一个可以产生 可以修改数据的resultSet对象的Statement
		Statement createStatement(int resultSetType, int resultSetConcurrency)  
		参数1  resultSetType - 结果集类型   
					ResultSet.TYPE_FORWARD_ONLY、 不支持结果集滚动,只能向前.
					ResultSet.TYPE_SCROLL_INSENSITIVE  支持滚动, 迟钝,不敏感的结果集.
					ResultSet.TYPE_SCROLL_SENSITIVE    支持滚动, 敏感的结果集.
 		参数2  resultSetConcurrency  - 结果是否支持修改类型
					ResultSet.CONCUR_READ_ONLY 	 不支持修改
					ResultSet.CONCUR_UPDATABLE   支持修改
 
	利用如下代码可以反向修改数据库中的数据:
		String sql = "select * from emp";
		Statement state = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
		
		ResultSet rs = state.executeQuery(sql);
		
		rs.next();
		
		rs.updateString("ename", "haha");
		
		rs.updateRow();
	
	结论: 不要使用resultSet 做修改的操作.  真的要做修改 我们要手写update语句来做.
package cn.itcast.d_rs; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import org.junit.Test; //ResultSet细节 // 1.结果集的滚动 => 移动结果集的指针就是滚动 // 2.结果集反向修改数据库 public class Demo2 { @Test public void fun1() throws Exception{ //1 注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2 获得连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day05", "root", "1234"); //3 创建Statement Statement st = conn.createStatement(); //4 书写sql String sql = "select * from t_user" ; //5 执行sql ResultSet rs = st.executeQuery(sql); //倒着遍历 //1> 光标移动到最后一行之后 rs.afterLast(); //2> 遍历=> while(rs.previous()){//向上移动光标,并判断是否有数据 int id = rs.getInt("id");// 获得id列的值 String name = rs.getString("name");//获得第二列的值 int age = rs.getInt("age");//获得第三列的值 System.out.println(id+"==>"+name+"==>"+age); } //6关闭资源 st.close(); conn.close(); } /* 数据库类型 java类型 int int double double decimal double char String varchar String datetime Date timestamp Timestamp/Date */ }
原文:http://www.cnblogs.com/almost-mujin/p/5883120.html