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

来源:互联网 发布:网络tv电视直播软件 编辑:程序博客网 时间:2024/06/07 13:22

一、前言

结果集(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

原创粉丝点击