JDBC学习篇之使用ResultSet执行简单查询操作

一、前言

结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,它同时还具有操纵数据的功能,可能完成对数据的更新等。

结果集读取数据的方法主要是getXXX(),它的参数可以是整型,表示第几列,下标从1开始;还可以是列名,指定根据别名返回某一列的值,返回的是对应的XXX类型的值。

如果对应那列是空值,XXX是对象的话返回XXX型的空值;如果XXX是数字类型,如Float等则返回0;boolean返回false;使用getString()可以返回所有的列的值,不过返回的都是字符串类型的。

XXX可以代表的类型有: 基本的数据类型如整型(int),布尔型(Boolean),浮点型(Float,Double)等,比特型(byte),还包括一些特殊的类型,如:日 期类型(java.sql.Date),时间类型(java.sql.Time),时间戳类型(java.sql.Timestamp),大数型 (BigDecimal和BigInteger等)等。

还可以使用getArray(intcolindex/String columnname),通过这个方法获得当前行中,colindex所在列的元素组成的对象的数组。使用 getAsciiStream(intcolindex/String colname)可以获得该列对应的当前行的ascii流。也就是说所有的getXXX方法都是对当前行进行操作。

结果集从其使用的特点上 可以分为四类,这四类的结果集的所具备的特点都是和Statement语句的创建有关,因为结果集是通过Statement语句执行后产生的,所以可以 说,结果集具备何种特点,完全决定于Statement。

二、案例

♦搭建一个简单的Java工程

JDBC学习篇之使用ResultSet执行简单查询操作的照片 - 1

♦创建一张数据库表t_user

create table t_user
(
  id         VARCHAR2(10) not null,
  name       VARCHAR2(14),
  password   VARCHAR2(13),
  email      VARCHAR2(20)
)

新建一个工具类

import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
 * @author queen
 * @since 2017-07-22
 */
public class ConnectionUtils {
	private static String driver;
	private static String url;
	private static String username;
	private static String password;

	public static void getProperties(String fileName) {
		Properties prop = new Properties();
		File file = new File(fileName);
		try {
			FileInputStream fis = new FileInputStream(file);
			//加载输入流指定的文件
			prop.load(fis);
			//获得文件中的key对应的value,赋值给全局变量
			driver = prop.getProperty("driverClassName");
			url = prop.getProperty("url");
			username = prop.getProperty("username");
			password = prop.getProperty("password");
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	/**
	 * 利用getProperties方法获得参数,构造连接并返回
	 * @return
	 */
	public static Connection getConnection() {
		getProperties("src/db.properties");
		Connection connection = null;
		try {
			Class.forName(driver);
			connection = DriverManager.getConnection(url, username, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return connection;
	}
	
	/**
	 * 关闭连接
	 * @param connection
	 */
	public static void close(Connection connection){
		if(connection!=null){
			try {
				connection.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 关闭Statement
	 * @param stmt
	 */
	public static void close(Statement stmt){
		if(stmt!=null){
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 关闭结果集
	 * @param rs
	 */
	public static void close(ResultSet rs){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

♦完成最基本的ResultSet操作,新建JDBCResultSet类

/**
 * @author queen
 * @since 2017-07-22
 */
public class JDBCResultSet {

	public static void getData() {
		String sql = "select * from t_user";
		Statement stmt = null;
		ResultSet rs = null;
		Connection connection = ConnectionUtils.getConnection();
		try {
			stmt = connection.createStatement();
			rs = stmt.executeQuery(sql);
			while (rs.next()) {
				String id = rs.getString("id");
				String name = rs.getString("name");
				String password = rs.getString("password");
				String email = rs.getString("email");
				System.out.println(id + "," + name + "," + password + ","
						+ email);
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			ConnectionUtils.close(rs);
			ConnectionUtils.close(stmt);
			ConnectionUtils.close(connection);
		}

	}

	public static void main(String[] args) {
		getData();
	}
}

测试运行一下,打印出如下结果:

1,Tom,123456,123456789@qq.com

上面这种是最简单的ResultSet使用,因为这个ResultSet它起到的作用就是完成了查询结果的存储功能,而且只能读取一次,不能够来回的滚动读取。这种结果集的创建方式如下:
Statement st = conn.CreateStatement()
ResultSet rs = Statement.excuteQuery(sql);
由于这种结果集不支持滚动的读取功能,所以如果获得这样一个结果集,只能使用它里面的next()方法,逐个的读去数据。

博客地址:http://www.marsitman.com/jdbc/jdbc_resultset.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值