欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA基础 之 ResultSet

程序员文章站 2022-04-06 18:42:24
...

 

概述:

    1.ResultSet:代表查询结果对象

    2.类型:

       ResultSet.TYPE_FORWARD_ONLY:记录指针只能向前移动

       ResultSet.TYPE_SCROLL_INSENSITIVE:记录指针自有移动,数据库数据变动不在ResultSet体现

       ResultSet.TYPE_SCROLL_SENSITIVE:记录指针自有移动,数据库数据变动会影响到ResultSet的内容

       ResultSet.CONCUR_READ_ONLY:只读的并发模式

       ResultSet.CONCUR_UPDATABLE:可更新的并发模式

       可更新的结果集需要:结果集数据来自一个表,必须包含主键

    3.本文介绍的方法:

       first、last、next、absolute、previous、beforeFirst、afterLast

       isFirst、isLast、isClosed、isBeforeFirst、isAfterLast、updateRow

       deleteRow、insertRow、updateRow、moveToInsertRow、moveToCurrentRow

 

package com.cxy.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;

/**
 * @author cxy
 */
public class ResultSetTest
{
	public static void main(String[] args)
	{
		try(
				Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbtest", "root", "root");
				PreparedStatement pstmt=con.prepareStatement("select * from t_student", 
															 ResultSet.TYPE_SCROLL_SENSITIVE,
															 ResultSet.CONCUR_UPDATABLE);
				ResultSet rs=pstmt.executeQuery();
		   )
		   {
				rs.first(); //将指针移动到第一行
				System.out.println("当前记录指针指向行数:"+rs.getRow()); 
				rs.next(); //指针移动到下一行
				System.out.println("当前记录指针指向行数:"+rs.getRow());
				rs.last();  //将指针移动到最后行
				int rowNum=rs.getRow(); //指针在最后可以通过这个方法获取所有记录数
				System.out.println("查询结果记录数:"+rowNum);
				System.out.println("=======================================");
				
				//利用absolute遍历 移动光标到指定行 绝对定位
				for(int i=1;i<=rowNum;i++)
				{
					rs.absolute(i);
					System.out.println(i+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
				}
				System.out.println("=======================================");
				
				//relative 相对移动  相对当前指针位置移动,括号内的参数可正可负
				//rs.relative(1); 相当于 next();
				//re.relative(-1); 相当于 previous();
				System.out.println("当前行:"+rs.getRow());
				rs.relative(-1);
				System.out.println("移动后的当前行:"+rs.getRow());
				System.out.println("=======================================");
				
				//previous:移动光标到当前指针的前一个
				rs.previous();
				System.out.println(rs.getRow()+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
				System.out.println("=======================================");
				
				//插入数据
				System.out.println("插入数据:");
				rs.moveToInsertRow();  //将指针移动到插入行,当前的位置将会被记住
				rs.updateString(1, UUID.randomUUID().toString().replace("-", ""));
				rs.updateString(2, "克隆人"+System.currentTimeMillis());
				rs.updateString(3, "男");
				rs.insertRow(); //必须和moveToInsertRow联合使用
				rs.moveToCurrentRow(); //做完插入操作后,将指针指回到插入状态前的行
				System.out.println("=======================================");
				
				//修改数据表
				System.out.println("修改数据:");
				rs.updateString(2, "小红-改");
				rs.updateRow();
				System.out.println(rs.getRow()+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
				System.out.println("=======================================");
				
				//删除某行
				System.out.println("删除数据:");
				rs.deleteRow();
				System.out.println(rs.getRow()+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
				System.out.println("=======================================");
				
				//几个判断
				System.out.println("当前指针是否指向第一行?"+rs.isFirst());
				System.out.println("当前指针是否指向最后一行?"+rs.isLast());
				System.out.println("结果集是否已经关闭?"+rs.isClosed());
				rs.beforeFirst();
				System.out.println("当前指针是否在第一行的前面?"+rs.isBeforeFirst());
				rs.afterLast();
				System.out.println("当前指针是否在最后一行的后面?"+rs.isAfterLast());
				
		   }catch(Exception e)
		   {e.printStackTrace();
			   System.out.println("数据库操作出现异常");
		   }
	}
	
	/**
	 * 打印ResultSet
	 */
	public  static void printResultSet(ResultSet rs2)
	{
		try
		{
			while(rs2.next())
			{
				System.out.println(rs2.getString(1)+"\t"+rs2.getString(2)+"\t"+rs2.getString(3));
			}
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
	}

}

 

 

相关文章连接:

《Java通用型遍历结果集》

 

 

声明:

1.原创文章,转载请标明并加本文连接。

2.文章反映个人愚见,如有异议欢迎讨论指正

 

 

相关标签: Java JDBC