使用數據庫操作對象對數據庫的操作分為兩類,一類是對數據庫內容的增刪改,另一類是對數據庫內容的查詢,因為查詢數據庫會從數據庫服務器返回查詢的結果,這個結果被封裝到一個結果集之中,我們需要對這個結果集進行相應的操作來獲取我們查詢的數據。
代碼演示:
package com.itheima.hui; import com.itheima.hui.utils.JDBCUtils; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JDBCSelect { public static void main(String[] args) { //使用JDBC的查詢操作 Connection connect = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //1.使用工具類過得連接對象 connect = JDBCUtils.getConnect(); String sql = "select * from student"; preparedStatement = connect.prepareStatement(sql); //執行查詢操作返回值是一個結果集對象 resultSet = preparedStatement.executeQuery(); //遍歷結果集 while (resultSet.next()) {//判斷結果集中的下一行還有沒有數據,有數據返回true並且指針下移,沒有數據返回false,指針不再下移 /* String id = resultSet.getString(1);//索引的值是從1開始的,值得注意的是只要是和數據庫交互的大部分的索引值都是從1開始的 String name = resultSet.getString(2); String age = resultSet.getString(3);*/ //當然我們也可以通過結果集的獲取數據的重載方法獲得數據 String id = resultSet.getString("id"); String name = resultSet.getString("name"); String age = resultSet.getString("age"); System.out.println(id + " " + " " + name + " " + age); } } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { //使用自定義工具類關閉資源 JDBCUtils.close(connect, preparedStatement, resultSet); } } }
對於結果集Resultset的解析:
當我們通過數據庫查詢數據的時候會返回相應的查詢結果:
這個結果就被封裝在Resultset結果集當中,在初始的時候,next();指針指向第一行真實數據的上面,如下圖所示:
當我們在對結果集進行操作的時候使用resultSet.next(),會判斷當前指針的下一行還有沒有數據:
- 如果有:
- 返回值為true
- 並且next();指針向下移動一行
- 如果沒有
- 返回值為false,指針不再向下移動
當我們經過判斷獲得true的時候,我們就需要對數據進行獲取的操作,在上面的代碼中有詳細的操作和解釋。