Java之JDBC-ResultSet(结果集)


之前的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的数据结构
Java之JDBC-ResultSet(结果集)_第1张图片
这里面还有一个elementData数据类型
数据其实就放在这个elementData数组里面
Java之JDBC-ResultSet(结果集)_第2张图片
当然存储的都是ASCLL码
Java之JDBC-ResultSet(结果集)_第3张图片
jack对应的ASCLL码-106 97 99 107
用字节数组存储每一个对应的字符呗

你可能感兴趣的:(JDBC,java,开发语言)