之前的dml语句都返回值都是int表示有改动的行数
那么Select可是要展示数据的
SELECT查询的结果
通过这个ResultSet遍历
然后通过next方法来一行行读取数据
类似于迭代器(肯定不是迭代器)
里面还包含获得的数据元素
相当于这个既包含元素,还能迭代自己的元素
具体你看底层
不过不能直接输出,我们需要一列一列数据获取(Get数据类型(第几列))
案列
package yuan.hsp.JDBC;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Driver;
@SuppressWarnings("all")
public class 结果集 {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db02", "root", "123456");
Statement createStatement = connection.createStatement();
String sql="select id,name,sex,borndate from actor";
ResultSet executeQuery = createStatement.executeQuery(sql);//和之前的execute不同,executeQuery返回一个ResultSet
//用while取出数据
while (executeQuery.next()) {//没有数据返回false
int id=executeQuery.getInt(1);//获取该行第一列数据
String name=executeQuery.getString(2);//第二列
String sex=executeQuery.getString(3);//第三列
Date date = executeQuery.getDate(4);//第四列
System.out.println(id+name+sex+date);
}
//关闭
createStatement.close();
connection.close();
}
}
底层
ResultSet实际上是一个接口
真正的类型
是这个黄线表的
是由我们的数据厂商实现
ResultSet里面有
一个rowData的数据结构
这里面还有一个elementData数据类型
数据其实就放在这个elementData数组里面
当然存储的都是ASCLL码
jack对应的ASCLL码-106 97 99 107
用字节数组存储每一个对应的字符呗