

package com.itheima.jdbc;import org.junit.Test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;/*** JDBC API 详情:Result*/public class JDBCDemo5_ResultSet {// 定义一个测试方法/*** 执行DQL 查询语句* @throws Exception*/@Testpublic void testResultSet() throws Exception{// 1. 注册驱动// Class.forName("com.mysql.jdbc.Driver"); // mysql5之后的驱动jar包,的注册驱动,可以不写了// 2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化,(简化,就是端口号和ip不写)// 这里的127.0.0.1 可以写成localhost 不想要红色警告可以设置参数后面的键值对(前面加问号)// useSSL=false (Java的键值对是 键=值 这里不能有空格String url = "jdbc:mysql:///db1?useSSL=false"; // db1 是数据库名String userName = "root";String passWord = "123456";Connection connection = DriverManager.getConnection(url, userName, passWord);// 定义sqlString sql = "select * from account";// 4. 获取statement对象 执行sql的对象Statement stmt = connection.createStatement();// 5. 执行sqlResultSet rs = stmt.executeQuery(sql);// 6. 处理结果,遍历rs中的所有数据 (将他查询到的数据都遍历出来)// // 6.1 next() 方法 光标向下移动一行,并且判断当前行是否为有效行(判断当前行是否有数据)// // 有数据返回true, 没数据返回false// while (rs.next()){ // 有数据执行// // 6.2 获取数据,getXXX()// int id = rs.getInt(1);// 获取第1列的的int类型的值// String name = rs.getString(2); // 获取第二列的String类型// double money = rs.getDouble(3); // 获取第三列的Double类型的数据// // 每次读一行,然后将该行每列的数据打印出来// System.out.println(id);// System.out.println(name);// System.out.println(money);// System.out.println("=====================");// }// 6.1 next() 方法 光标向下移动一行,并且判断当前行是否为有效行(判断当前行是否有数据)// 有数据返回true, 没数据返回falsewhile (rs.next()){ // 有数据执行// 6.2 获取数据,getXXX()int id = rs.getInt("id");// 获取第一行第一列为id字段的的int类型的值String name = rs.getString("name"); // 获取第二列的String类型double money = rs.getDouble("money"); // 获取第三列的Double类型的数据// 每次读一行,然后将该行每列的数据打印出来System.out.println(id);System.out.println(name);System.out.println(money);System.out.println("=====================");}// 释放资源rs.close();connection.close();}}
案例: 
包名pojo一般是用来存储Java实体类的(User,account)
package com.itheima.jdbc;import com.itheima.pojo.Account;import org.junit.Test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;/*** JDBC API 详情:Result*/public class JDBCDemo5_ResultSet {// 定义一个测试方法/*** 执行DQL 查询语句* @throws Exception*/@Testpublic void testResultSet() throws Exception{// 1. 注册驱动// Class.forName("com.mysql.jdbc.Driver"); // mysql5之后的驱动jar包,的注册驱动,可以不写了// 2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化,(简化,就是端口号和ip不写)// 这里的127.0.0.1 可以写成localhost 不想要红色警告可以设置参数后面的键值对(前面加问号)// useSSL=false (Java的键值对是 键=值 这里不能有空格String url = "jdbc:mysql:///db1?useSSL=false"; // db1 是数据库名String userName = "root";String passWord = "123456";Connection connection = DriverManager.getConnection(url, userName, passWord);// 定义sqlString sql = "select * from account";// 4. 获取statement对象 执行sql的对象Statement stmt = connection.createStatement();// 5. 执行sqlResultSet rs = stmt.executeQuery(sql);// 6. 处理结果,遍历rs中的所有数据 (将他查询到的数据都遍历出来)// // 6.1 next() 方法 光标向下移动一行,并且判断当前行是否为有效行(判断当前行是否有数据)// // 有数据返回true, 没数据返回false// while (rs.next()){ // 有数据执行// // 6.2 获取数据,getXXX()// int id = rs.getInt(1);// 获取第1列的的int类型的值// String name = rs.getString(2); // 获取第二列的String类型// double money = rs.getDouble(3); // 获取第三列的Double类型的数据// // 每次读一行,然后将该行每列的数据打印出来// System.out.println(id);// System.out.println(name);// System.out.println(money);// System.out.println("=====================");// }// 6.1 next() 方法 光标向下移动一行,并且判断当前行是否为有效行(判断当前行是否有数据)// 有数据返回true, 没数据返回falsewhile (rs.next()){ // 有数据执行// 6.2 获取数据,getXXX()int id = rs.getInt("id");// 获取第一行第一列为id字段的的int类型的值String name = rs.getString("name"); // 获取第二列的String类型double money = rs.getDouble("money"); // 获取第三列的Double类型的数据// 每次读一行,然后将该行每列的数据打印出来System.out.println(id);System.out.println(name);System.out.println(money);System.out.println("=====================");}// 释放资源rs.close();connection.close();}// 定义一个测试方法/*** 查询account账户表数据,封装成Account对象中,并且存储到ArrayList集合中去* 1. 定义实体类Account* 2. 查询数据,封装到Account对象中去* 3. 将Account对象存入到ArrayList集合中去*** @throws Exception*/@Testpublic void testResultSet2() throws Exception{// 1. 注册驱动// Class.forName("com.mysql.jdbc.Driver"); // mysql5之后的驱动jar包,的注册驱动,可以不写了// 2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化,(简化,就是端口号和ip不写)// 这里的127.0.0.1 可以写成localhost 不想要红色警告可以设置参数后面的键值对(前面加问号)// useSSL=false (Java的键值对是 键=值 这里不能有空格String url = "jdbc:mysql:///db1?useSSL=false"; // db1 是数据库名String userName = "root";String passWord = "123456";Connection connection = DriverManager.getConnection(url, userName, passWord);// 定义sqlString sql = "select * from account";// 4. 获取statement对象 执行sql的对象Statement stmt = connection.createStatement();// 5. 执行sqlResultSet rs = stmt.executeQuery(sql);// 创建集合(集合的泛型是Account类)因为要存储Account类创建的对象List<Account> list = new ArrayList<>();// 6.1 next() 方法 光标向下移动一行,并且判断当前行是否为有效行(判断当前行是否有数据)// 有数据返回true, 没数据返回falsewhile (rs.next()){ // 有数据执行Account account = new Account();// 6.2 获取数据,getXXX()int id = rs.getInt("id");// 获取第一行第一列为id字段的的int类型的值String name = rs.getString("name"); // 获取第二列的String类型double money = rs.getDouble("money"); // 获取第三列的字段为money的Double类型的数据// 将每次遍历得到的值,赋值给account类中的成员中去(使用set方法)account.setId(id);account.setName(name);account.setMoney(money);// 将每次赋值后,将该对象存入到集合中去list.add(account);}// 查看集合里面有没有数据System.out.println(list);// 释放资源rs.close();connection.close();}}
定义一个账户类
package com.itheima.pojo;public class Account {private int id;private String name;private double money;public Account() {}public Account(int id, String name, double money) {this.id = id;this.name = name;this.money = money;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}@Overridepublic String toString() {return "Account{" +"id=" + id +", name='" + name + '\'' +", money=" + money +'}';}}
