本章目标
掌握ResultSet接口的主要作用
使用ResultSet接口查询数据
ResultSet接口
使用SQL中的SELECT语句可以将数据库的全部结果查询出来,在JDBC的操作中数据库的所有查询记录将使用ResultSet进行接收,并使用ResultSet显示内容。
ResultSet接口的常用操作方法
从 consumer 表中查询数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ResultSetDemo01 {
public static void main(String[] args) throws Exception {
//oracle.jdbc.driver.OracleDriver 数据库驱动程序
//jdbc:oracle:thin:gome/gome@localhost:1521:oracle11 连接数据库
Connection conn=null; //数据库连接
Statement stmt = null;//数据库操作
ResultSet rs = null;//保存查询结果
String sql = "select id, name, age, sex, birthday from consumer";
Class.forName("oracle.jdbc.driver.OracleDriver"); //加载驱动程序
//连接数据库
conn=DriverManager.getConnection("jdbc:oracle:thin:gome/gome@localhost:1521:oracle11");
stmt = conn.createStatement();//实例化 Statement 对象
rs = stmt.executeQuery(sql);//实例化 ResultSet 对象
while(rs.next()){//指针向下移动
int id = rs.getInt("id");//取得 id 内容
String name = rs.getString("name");//取得 name 内容
int age = rs.getInt("age");//取得 age 内容
String sex =rs.getString("sex");//取得 sex 内容
java.util.Date birthday = rs.getDate("birthday");//取得 birthday 内容
System.out.print("编号:"+id+"; ");//输出编号
System.out.print("姓名:"+name+"; ");//输出姓名
System.out.print("年龄:"+age+"; ");//输出年龄
System.out.print("性别:"+sex+"; ");//输出性别
System.out.print("生日:"+birthday);//输出生日
System.out.println("\n-----------------------------");//换行
}
rs.close();//关闭结果集
stmt.close();//操作关闭
conn.close(); //数据库关闭
}
/* 结果:
* 编号:17; 姓名:chaoyv; 年龄:31; 性别:男; 生日:2014-07-01
* -----------------------------
* 编号:2; 姓名:chaoyi; 年龄:30; 性别:男; 生日:2014-07-02
* -----------------------------
* 编号:3; 姓名:yike; 年龄:31; 性别:男; 生日:2014-07-03
* -----------------------------
* */
}
通过编号取出数据
在执行查询语句的时候,是将数据库中的查询结果返回到内存之中,所以rs.next()的作用,是将返回的结果依次判断,如果有结果,则使用getXxx()语句的形式将内容取出。当然,如果感觉以上代码再取出数据的时候输入列的名称比较麻烦,则可以按取值的顺序采用编号的形式将内容取出。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ResultSetDemo02 {
public static void main(String[] args) throws Exception {
//oracle.jdbc.driver.OracleDriver 数据库驱动程序
//jdbc:oracle:thin:gome/gome@localhost:1521:oracle11 连接数据库
Connection conn=null; //数据库连接
Statement stmt = null;//数据库操作
ResultSet rs = null;//保存查询结果
String sql = "select id, name, age, sex, birthday from consumer";
Class.forName("oracle.jdbc.driver.OracleDriver"); //加载驱动程序
//连接数据库
conn=DriverManager.getConnection("jdbc:oracle:thin:gome/gome@localhost:1521:oracle11");
stmt = conn.createStatement();//实例化 Statement 对象
rs = stmt.executeQuery(sql);//实例化 ResultSet 对象
while(rs.next()){//指针向下移动
int id = rs.getInt(1);//取得 id 内容
String name = rs.getString(2);//取得 name 内容
int age = rs.getInt(3);//取得 age 内容
String sex =rs.getString(4);//取得 sex 内容
java.util.Date birthday = rs.getDate(5);//取得 birthday 内容
System.out.print("编号:"+id+"; ");//输出编号
System.out.print("姓名:"+name+"; ");//输出姓名
System.out.print("年龄:"+age+"; ");//输出年龄
System.out.print("性别:"+sex+"; ");//输出性别
System.out.print("生日:"+birthday);//输出生日
System.out.println("\n-----------------------------");//换行
}
rs.close();//关闭结果集
stmt.close();//操作关闭
conn.close(); //数据库关闭
}
/* 结果:
* 编号:17; 姓名:chaoyv; 年龄:31; 性别:男; 生日:2014-07-01
* -----------------------------
* 编号:2; 姓名:chaoyi; 年龄:30; 性别:男; 生日:2014-07-02
* -----------------------------
* 编号:3; 姓名:yike; 年龄:31; 性别:男; 生日:2014-07-03
* -----------------------------
* */
}