ResultSet介绍
对数据库的查询操作,一般需要返回查询结果。在程序中,JDBC为我们提供了ResultSet接口来专门处理查询结果集。
由于ResultSet是JDBC的一个接口,先来简单了解一下JDBC:
JDBC:Java Database Connection,表示数据库连接(任何数据库都支持JDBC的连接),是一个独立于特定数据库管理系统、通用的sql数据库存取和操作的公共接口。它是java中专门提供的一组用于操作数据库的标准,所有的数据库生产商如果要是想为java提供支持,则必须支持此标准。所以说JDBC实际上是一套访问数据库的接口。
通过以下方法执行一个查询操作:
ResultSet executeQuery(String sql) throws SQLException
- executeQuery是查询
- 函数的返回类型是ResultSet
实际上查询的数据并不在ResultSet里面,依然是在数据库里,ResultSet中的next()方法类似于一个指针,指向查询的结果,然后不断遍历以获取数据库中的结果。所以这就要求连接不能断开。
JDBC常用的操作类/接口
Connection接口
Statement接口
PreapredStatement接口
ResultSet接口
CallableStatement接口
DriverManager类
ResultSet接口常用的方法
boolean next() 遍历时,判断是否有下一个结果
int getInt(String columnLabel)
int getInt(int columnIndex)
Date getDate(String columnLabel)
Date getDate(int columnIndex)
String getString(String columnLabel)
String getString(int columnIndex)
ResultSet接口实现查询操作
步骤如下:
1、加载数据库驱动程序:Class.forName(驱动程序类)
2、通过用户名密码和连接地址获取数据库连接对象:
DriverManager.getConnection(连接地址,用户名,密码)
3、构造查询SQL语句
4、创建Statement实例:
Statement stmt = conn.createStatement()
5、执行查询SQL语句,并返回结果:
ResultSet rs = stmt.executeQuery(sql)
6、处理结果
7、关闭连接:rs.close()、stmt.close()、conn.close()
案例分析:
package com.inspur.servlet;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class NiHao {
//数据库连接地址
private final static String URL = "jdbc:mysql://10.10.4.92:3306/jctest?characterEncoding=utf8&useSSL=true";
//用户名
public final static String USERNAME = "jctest";
//密码
public final static String PASSWORD = "jctest";
//加载的驱动程序类(这个类就在我们导入的jar包中)
public final static String DRIVER = "com.mysql.jdbc.Driver";
public static void main(String[] args) {
// TODO Auto-generated method stub
query();
}
//方法:查询操作
public static void query(){
try {
//1.加载数据库驱动程序
Class.forName(DRIVER);
//2.通过用户名密码和连接地址url获取数据库连接对象
Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
//3.构造插入的SQL语句
String sql = "select 姓名 from Mac_Name";
//4.创建Statement实例
Statement state = conn.createStatement();
//5.执行查询并返回结果集
ResultSet rs = state.executeQuery(sql);
//6.处理结果
while(rs.next()){ //通过next来索引:判断是否有下一个记录
String name = rs.getString("姓名");
System.out.println("name="+name);
}
//7.关闭连接
rs.close();
state.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
运行结果如下示: