`

JAVA基础 之 ResultSet

    博客分类:
  • java
阅读更多

 

概述:

    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.文章反映个人愚见,如有异议欢迎讨论指正

 

 

2
1
分享到:
评论
4 楼 佐手_ 2015-09-17  
snkcxy 写道
佐手_ 写道
用rs来做文章,用到的地方不多吧,可能是我见识太少了。


请注意标题,不是做文章,是一系列的java基础知识的一部分,真正开发 很少会直接用java的jdbc,但是也不是绝对的,有些更加底层性质的东西 还是要从这里开始写。

受教!
3 楼 snkcxy 2015-09-16  
佐手_ 写道
用rs来做文章,用到的地方不多吧,可能是我见识太少了。


请注意标题,不是做文章,是一系列的java基础知识的一部分,真正开发 很少会直接用java的jdbc,但是也不是绝对的,有些更加底层性质的东西 还是要从这里开始写。
2 楼 佐手_ 2015-08-12  
用rs来做文章,用到的地方不多吧,可能是我见识太少了。
1 楼 snkcxy 2013-02-28  
看来以后大的程序还是要截段呀~

相关推荐

    西安交大JAVA 基础讲义

    1.详细讲述了JAVA环境变量的配置和说明 2.透彻的介绍了类,对象的概念 3.对JAVA的多态,继承,封装做了比较详细的介绍 ...9.使用JDBC,ODBC连接数据库,介绍了Connection,Statement ,ResultSet的使用方法和注意事项。

    mock-resultset:MockResultSet是由CSV数据支持的java.sql.ResultSet的实现

    旨在克服诸如数据库服务器或VPN不可用之类的基础架构限制。 MockResultSet允许程序员即使没有数据库服务器来运行SQL查询也可以继续进行工作。 如果包含查询结果的CSV文件可用,则可以轻松地模拟数据库连接,以便仍...

    java基础案例与开发详解案例源码全

    18.2.4 ResultSet接口467 18.3 JDBC操作SQL469 18.4 JDBC基本示例473 18.5 JDBC应用示例479 18.6 本章习题492 第19章 19.1 网络编程的基本概念494 19.1.1 网络基础知识494 19.1.2 网络基本概念495 19.1.3 网络传输...

    Java开发详解.zip

    010301_【第3章:Java基础程序设计】_Java数据类型笔记.pdf 010302_【第3章:Java基础程序设计】_运算符、表达式与语句笔记.pdf 010303_【第3章:Java基础程序设计】_判断与循环语句笔记.pdf 010401_【第4章:数组与...

    Java建立数据库连接并实现数据库查询.rar

    Java建立数据库连接并实现数据库查询,初学者通过本Java源代码,了解如何加载驱动器,获取连接,定义SQL查询语句,获取Statement对象,执行查询、遍历ResultSet、获取数据、在控制台输出数据,关闭连接等。

    一个开源的Java基础工具包

    数据库工具类,提供了关闭方法:关闭可以传入多个参数,关闭的顺序是按照参数的顺序来的,用于一次性关闭Connnection、Statement、ResultSet等 newSqlRunner方法用于快速新建一个SqlRunner(此类介绍参考下问) 3、...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《Java JDK 7学习笔记》将IDE操作纳为教学内容之一,使读者能与实践结合,提供的视频教学能更清楚地帮助读者掌握操作步骤。 内容简介 书籍 计算机书籍  《java jdk 7学习笔记》是作者多年来教学实践经验的总结...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    Java JDK实例宝典

    第1章 Java基础 1.1 转换基本数据类型 1.2 Java的运算符 1.3 控制程序的流程 1.4 计算阶乘 1.5 实现命令行程序 第2章 Java面向对象程序设计 2. 1 复数类 2. 2 equals.chashCode...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    Java数据编程指南

    Java数据库连接(JDBC) 什么是JDBC JDBC结构 开始起步 使用JDBC 一个简单的范例 对映Java与SQL类型 处理SQL错误 ResultSet与数据库元数据 JDBC中的事务处理 一个JDBC事务范例 ...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用、Spring核心之IoC、...

    Java数据库编程宝典3

    第3章 SQL基础 3.1 SQL语言 3.2 SQL数据类型 3.3 数据定义语言 3.3.1 创建、取消、更改数据库和表 3.3.2 创建、更改和取消视图 3.4 数据处理语言 3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 ...

    银行取款转账系统(Java编写)

    非常适合有一定基础的Java初学者使用。 package com.gujunjia.bank; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ import java.sql.*; /** * * @...

    Java更新、插入、删除数据库中的内容.rar

    Java更新、插入、删除数据库中的内容,这个比较基础了,但比较实用了,可学习Java与SqlServer数据库如何建立通信,如何通过代码来执行数据库的命令,包括删除、更新、添加、查询记录等操作。比如更新、删除、插入和...

    JAVA银行管理系统设计.docx

     案例难度 案例覆盖技能点 使用JDBC操作数据库、常用数据库操作对象的使用、ArrayList的使用、加深对集合框架的理解、异常的处理、scanner的使用 推荐案例完成时间 1天 适用课程和对象 JAVA面向对象编程基础 第...

    Java数据库编程宝典2

    第3章 SQL基础 3.1 SQL语言 3.2 SQL数据类型 3.3 数据定义语言 3.3.1 创建、取消、更改数据库和表 3.3.2 创建、更改和取消视图 3.4 数据处理语言 3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 ...

    Java数据库编程宝典4

    第3章 SQL基础 3.1 SQL语言 3.2 SQL数据类型 3.3 数据定义语言 3.3.1 创建、取消、更改数据库和表 3.3.2 创建、更改和取消视图 3.4 数据处理语言 3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 ...

    jdk1.6 windows 64位

     JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握 JDK是学好Java的第一步。最主流的...

    Java数据库编程宝典1

    第3章 SQL基础 3.1 SQL语言 3.2 SQL数据类型 3.3 数据定义语言 3.3.1 创建、取消、更改数据库和表 3.3.2 创建、更改和取消视图 3.4 数据处理语言 3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 ...

Global site tag (gtag.js) - Google Analytics