ResultSet
-
ResultSet(结果集对象)作用: 封装了DQL查询语句的结果
执行DQL语句后,将所得结果封装,并用一个游标进行指向,游标默认指向DQL结果集的第一行,并对当前行进行判断,如果游标所在行被判断存在数据时,将光标下移一行再次进行判断,直到游标所在行被判断出为无效行,当前行没有数据时,游标上移到上一次的有效行,即从起始行(即字段名所在行)开始,到最后一行有效行即为被封装的DQL结果集
ResultSet stmt.executeQuery(sql): //执行DQL语句,返回ResultSet对象
-
获取查询结果
boolean next(); /* (1)将光标位置向前移动一行 (2)判断当前行是否为有效行 返回值: (1)有效行,当前行有数据 (2)无效行,当前行没有数据 */
xxx getXxx(参数) //获取数据 /* xxx:数据类型 Xxx为数据类型的封装类型 例如:int getInt(参数);String getString(参数) 参数:(参数的数据类型) int 列的编号,从1开始 String 列的名称 */
因为游标始终执行着“”判断—获取数据“,所以对ResultSet的使用要通过循环来操作
-
使用步骤
- 游标向下移动一行,并判断该行是否有数据:next()
- 获取数据:getXxx(参数)
// 循环判断游标是否是最后一行末尾 while(rs.next){ // 获取数据 rs.getXxx(参数); }
import java.sql.*; public class JDBCDemo { public static void main(String[] args) throws Exception { Class.forName("com.mysql.cj.jdbc.Driver"); String url = "jdbc:mysql://127.0.0.1:3306/school?useSSL = false"; String username = "root"; String password = "ZZXQJL@0916.com"; Connection coon = DriverManager.getConnection(url, username, password); //定义SQL语句 String sql = "select * from bank;"; //获取Statement对象 Statement stmt = coon.createStatement(); //执行SQL ResultSet rs = stmt.executeQuery(sql); //处理结果,遍历rs中的所有数据 while(rs.next()){ //获取数据 getXxx() String name = rs.getString(1); // String name = rs.getString("name"); int income = rs.getInt(2); // int income = rs.getInt("income"); System.out.println(name + " " +income); } rs.close(); stmt.close(); coon.close(); } }
-
对查询结果封装(在现实生活中,客户看到的查询结果往往是封装后的结果)
目标:查询account账户表数据,封装Account对象中,并且储存到ArrayList集合中
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class JDBCDemo {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/school?useSSL = false";
String username = "root";
String password = "ZZXQJL@0916.com";
Connection coon = DriverManager.getConnection(url, username, password);
//创建集合
List<Account> list = new ArrayList<>();
//定义SQL语句
String sql = "select * from account;";
//获取Statement对象
Statement stmt = coon.createStatement();
//执行SQL
ResultSet rs = stmt.executeQuery(sql);
//处理结果,遍历rs中的所有数据
while(rs.next()){
Account account = new Account();
//获取数据 getXxx()
int id = rs.getInt("id");
String name = rs.getString("name");
int money = rs.getInt("money");
//赋值
account.setId(id);
account.setName(name);
account.setMoney(money);
//存入集合
list.add(account);
}
System.out.println(list);
rs.close();
stmt.close();
coon.close();
}
}
网友评论