JDBC知識回顧

JDBC 簡單介紹

  • JDBC 是一種用於執行SQL語句的Java API,能夠爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。java 提供了jdbc的接口規範,對應數據庫廠商依照規範進行驅動類庫開發,提供給開發者。 應用程序與數據以jdbc橋接的方式進行交互,任何基於JDBC 的 ORM 框架都是對JDBC 操做的封裝

jdbc 流程圖

  • 經常使用接口java

    • java.sql.Driversql

      該接口是提供給數據庫開發廠商的,主要功能是描述驅動程序,提供驅動信息,最重要的是實現數據庫鏈接的抽象 Connection connect(String url, java.util.Properties info)throws SQLException,若是某個數據庫要實現jdbc規範必須實現該接口。 開發者裝載該接口經過 Class.forName(String driverName)進行,其中 driverName 爲全類名。數據庫

    • java.sql.Connectionbash

      該接口是數據庫jdbc 鏈接的抽象層,主要生成SQL並向數據庫發送框架

      • 編譯語句 java.sql.Statement
      • 預編譯語句java.sql.PreparedStatement
      • 數據庫存儲過程 java.sql.CallableStatement

      同時事務級別 事務的commit,事務的callback,鏈接的生命週期 也由 Connection 來操做。大數據

      事務的隔離級別url

      • int TRANSACTION_NONE = 0 無事務
      • int TRANSACTION_READ_UNCOMMITTED = 1 讀取未提交
      • int TRANSACTION_READ_COMMITTED = 2 讀取已提交
      • int TRANSACTION_REPEATABLE_READ = 4 可重複讀取
      • int TRANSACTION_SERIALIZABLE = 8 可序列化
    • java.sql.Statementspa

      用於執行靜態SQL語句並返回它所生成結果的對象。code

      類圖:cdn

      statement 類圖
      statement 類圖

      • Statement:由createStatement建立,用於發送簡單的SQL語句(不帶參數) 。

        statement 沒有 set<Type>之類的方法,因此sql必須做爲一個總體傳入。例如

        //獲取statement 
          Statement statement = jdbcMysqlConnection.statement();
               // sql 必須做爲總體進行操做
                ResultSet resultSet = statement.executeQuery("select * from sys_user");
        
                while (resultSet.next()) {
                    System.out.println(resultSet.getString(1));
                }
        複製代碼
      • PreparedStatement :繼承自Statement接口,由preparedStatement建立,用於發送含有一個或多個參數的SQL語句。PreparedStatement對象比Statement對象的效率更高,而且能夠防止SQL注入,因此咱們通常都使用PreparedStatement,大數據量比較消耗資源。例如

        //可傳入 字段佔位符 ?       
                PreparedStatement preparedStatement = jdbcMysqlConnection.preparedStatement("select * from sys_role where state =?");
               // 對佔位符進行賦值操做 從1 開始   一旦使用佔位符 必須對佔位符進行賦值 才能 進行 execute系列操做       
                  preparedStatement.setString(1,"1");
                ResultSet resultSet = preparedStatement.executeQuery();
        
        複製代碼
      • CallableStatement:繼承自PreparedStatement接口,由方法prepareCall建立,用於調用存儲過程

      statement 經常使用方法:

      • execute(String sql):運行語句,返回是否有結果集
      • executeQuery(String sql):運行select語句,返回ResultSet結果集。
      • executeUpdate(String sql):運行insert/update/delete操做,返回更新的行數。
      • addBatch(String sql) :把多條sql語句放到一個批處理中。
      • executeBatch():向數據庫發送一批sql語句執行。
      • set<Type>(int colunmIndex,Type val) 系列接口 PreparedStatement 回填參數值
    • java.sql.ResultSet

      主要用來獲取sql執行後返回的結果集

      獲取字段數據操做

      • getString(int index)、getString(String columnName):得到在數據庫裏是varchar、char等類型的數據對象。
      • getFloat(int index)、getFloat(String columnName):得到在數據庫裏是Float類型的數據對象。
      • getDate(int index)、getDate(String columnName):得到在數據庫裏是Date類型的數據。
      • getBoolean(int index)、getBoolean(String columnName):得到在數據庫裏是Boolean類型的數據。
      • getObject(int index)、getObject(String columnName):獲取在數據庫裏任意類型的數據。

      遊標操做

      • next():移動到下一行
      • previous():移動到前一行
      • absolute(int row):移動到指定行
      • beforeFirst():移動resultSet的最前面。
      • afterLast() :移動到resultSet的最後面。
  • resultSet statement connection 都是須要關閉 遵循從下游到上游的方向依次關閉
相關文章
相關標籤/搜索