JDBC | 第五章: JDBC之ResultSet结果集遍历和数据的获取
JDBC结果集#
- SQL语句执行后从数据库查询读取数据,返回的数据放在结果集中 ResultSet接口表示数据库查询的结果集。
- ResultSet对象维护指向结果集中当前行的游标。 术语“结果集”是指包含在ResultSet对象中的行和列数据。
浏览结果集
编号 | 方法 | 描述 |
---|---|---|
1 | public void beforeFirst() throws SQLException | 将光标移动到第一行之前 |
2 | public void afterLast() throws SQLException | 将光标移动到最后一行之后。 |
3 | public boolean first() throws SQLException | 将光标移动到第一行。 |
4 | public void last() throws SQLException | 将光标移动到最后一行。 |
5 | public boolean absolute(int row) throws SQLException | 将光标移动到指定的行。 |
6 | public boolean relative(int row) throws SQLException | 从当前指向的位置,将光标向前或向后移动给定行数。 |
7 | public boolean previous() throws SQLException | 将光标移动到上一行。 如果上一行关闭结果集,此方法返回false。 |
8 | public boolean next() throws SQLException | 将光标移动到下一行。 如果结果集中没有更多行,则此方法返回false。 |
9 | public int getRow() throws SQLException | 返回光标指向的行号。 |
10 | public void moveToInsertRow() throws SQLException | 将光标移动到结果集中的特殊行,该行可用于将新行插入数据库。当前光标位置被记住。 |
11 | public void moveToCurrentRow() throws SQLException | 如果光标当前位于插入行,则将光标移回当前行; 否则,此方法什么也不做 |
查看结果集
编号 | 方法 | 描述 |
---|---|---|
序号 | 方法 | 描述 |
1 | public int getInt(String columnName) throws SQLException | 返回名为columnName的列中当前行中的int值。 |
2 | public int getInt(int columnIndex) throws SQLException | 返回指定列索引当前行中的int值。列索引从1开始,意味着行的第一列为1,行的第二列为2,依此类推。 |
类似地,在八个Java基元类型中的每一个的ResultSet接口中都有get方法,以及常见的类型,如java.lang.String,java.lang.Object和java.net.URL等。
简单使用#
/*
* 简单数据获取遍历
* */
public void selectEasy() {
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
String sql = "select * from user limit 0,50";
try {
//获取数据连接
connection = basicUse.getConnection();
//获取发送sql指令执行sql对象
statement = connection.createStatement();
//返回查询结果集用于保存数据库查询内容
rs = statement.executeQuery(sql);
//遍历结果集拿到数据
//next()---------------类似指针的效果,会向下移动;
while (rs.next()) {
// getString(String columnname)-------------根据列名获取本列的值;
//getString(int index)--------------根据索引获取指定位置的值;
System.out.println("id" + "\t" + rs.getString(1));
System.out.println("name" + "\t" + rs.getString(2));
System.out.println("age" + "\t" + rs.getString("age"));
System.out.println("email" + "\t" + rs.getString("email"));
System.out.println("manager_id" + "\t" + rs.getString("manager_id"));
System.out.println("create_time" + "\t" + rs.getString("create_time"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//执行完数据库操作后记得关闭数据库连接资源
try {
rs.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
完整项目案例
点击这里 github
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端