`

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  
看来以后大的程序还是要截段呀~

相关推荐

    JDBC基础教程之ResultSet对象.doc )

    ### JDBC基础教程之ResultSet对象详解 #### 一、ResultSet对象概览 `ResultSet`对象是Java Database Connectivity (JDBC) API中的一个核心组件,用于处理SQL查询结果。它充当了一个临时的数据存储,其中包含了所有...

    poi根据ResultSet到处Excle源码

    - Java基础语法和面向对象编程 - JDBC API,用于与数据库建立连接、执行SQL语句并获取ResultSet - Apache POI库的使用,包括HSSF(处理.xls文件)和XSSF(处理.xlsx文件)API - ResultSet的遍历,如next()方法和各...

    最经典的Java基础实验与案例开发指导教程精选

    本教程"最经典的Java基础实验与案例开发指导教程精选"旨在提供一个全面的学习平台,帮助新手快速掌握Java编程的核心概念。以下是对该教程内容的详细解读: 1. **Java基础概念**:Java的基础包括变量、数据类型、...

    Java基础类

    Java基础类是学习Java编程语言的关键部分,涵盖了各种核心概念和技术。这些概念和技术构成了Java程序设计的基础,并在实际开发中广泛应用。以下是对标题和描述中提及的Java基础类知识点的详细解释: 1. **字符串...

    Java基础资料

    这份"Java基础资料"涵盖了从Java基础知识到高级特性的全面学习路径,旨在帮助初学者快速掌握Java编程。 第一章:JAVA基础 这部分内容将引导你了解Java的基础概念,包括安装JDK(Java Development Kit),设置环境...

    Java基础之JDBC相关代码

    Java基础之JDBC相关代码是Java编程中一个重要的部分,主要涉及如何与关系型数据库进行交互。在Java中,JDBC(Java Database Connectivity)是一套规范,它为开发者提供了标准的API,使得Java应用程序能够连接到各种...

    JAVA初级基础PPT

    14. **JDBC(Java Database Connectivity)**:学习如何连接数据库,执行SQL查询,以及使用PreparedStatement和ResultSet对象。 15. **Java注解**:理解注解的用途,包括元注解和自定义注解,以及它们在编译时和...

    javajava基础基础

    一、Java 流和文件操作 Java 中的流主要分为两类:字节流和字符流,它们分别继承自 ...这些知识点涵盖了 Java 的基础知识,包括文件操作、数据库交互、网络编程以及 GUI 开发,对于理解和掌握 Java 编程至关重要。

    Java基础课件

    本Java基础课件将带你深入理解和掌握这门强大的语言。 一、Java语言基础 Java的基础包括语法、数据类型、变量、运算符、流程控制语句等。数据类型分为基本类型(如int、float、char)和引用类型(如类、接口、数组...

    java基础视频-试看.rar

    这个"java基础视频-试看.rar"似乎是一份专为初学者设计的教程资源,帮助学习者掌握Java编程的基本概念和语法。让我们深入探讨一下Java的基础知识。 1. **Java简介**:Java是由Sun Microsystems(后被Oracle收购)...

    java基础知识总结

    1. 平台无关性是Java的核心特性之一,这意味着Java程序可以在任何支持Java虚拟机(JVM)的平台上运行,无需针对特定操作系统进行修改。源代码级的平台无关性意味着用Java编写的程序在不同系统中只需重新编译即可,而...

    Java基础教程(Java

    Java是一种广泛使用的...Java基础教程通常会涵盖以上这些内容,学习者可以通过阅读`Java基础教程.pdf`进一步深入理解和掌握Java编程的基础概念和技能。这个PDF文档将是一个全面的指南,帮助初学者逐步进入Java的世界。

    【IT十八掌徐培成】Java基础第22天-04.JDBC基础.zip

    本课程"【IT十八掌徐培成】Java基础第22天-04.JDBC基础"可能是由知名IT教育专家徐培成教授的,主要讲解了Java基础的第22天课程,专注于JDBC的基础知识。课程内容可能涵盖了以下几个核心知识点: 1. **JDBC API概述*...

    resultset2xml

    在IT行业中,数据库查询结果通常以ResultSet对象的形式返回,它是一种存储查询结果的接口,源自Java的JDBC(Java Database Connectivity)API。当需要将这些数据转换为XML格式时,以便于数据交换、存储或进一步处理...

    JAVA 基础教学课件

    Java Database Connectivity (JDBC) API是Java连接数据库的标准接口,通过DriverManager、Connection、Statement和ResultSet等类实现数据库的连接、查询、增删改操作。 这套【JAVA 基础教学课件】将详细讲解以上...

    基于java基础和JDBC的小型员工管理系统

    【基于Java基础和JDBC的小型员工管理系统】是一个适合初学者进行实践的项目,它涵盖了Java编程语言的基础知识以及数据库连接技术JDBC。这个系统能够完成对员工信息的基本操作,包括增加新员工、删除现有员工、修改...

    java基础数据库编程课件

    Java基础数据库编程主要涉及到JDBC(Java Database Connectivity),这是一个用于连接Java应用程序与SQL数据库的API。JDBC提供了一种标准的、独立于特定数据库的接口,使得开发人员能够使用Java编写程序来存取不同...

    Java基础.zip

    这个名为"Java基础.zip"的压缩包包含了一系列关于Java基础知识的教程,旨在帮助初学者快速入门。下面将对这些文件中可能涵盖的重要知识点进行详细解释。 1. **JAVA概述**:这部分通常会介绍Java的历史、应用领域、...

    java基础知识总结 Java学习资料

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司)于1995年发布。它以其“一次编写,到处运行”的特性而闻名,因为...通过学习和实践这些示例,可以加深对Java基础的理解,提升编程能力。

Global site tag (gtag.js) - Google Analytics