JDBC詳解


簡述

  JDBC是Java Data Base Connectivity的縮寫,本質就是使用java語言操作數據庫。JDBC本質是sun公司定義了所有操作關系型數據庫的規則(接口)。每一個不同數據庫的廠商,都實現了JDBC接口,提供數據庫驅動jar包。我們可以使用這套JDBC接口編程,真正執行的代碼是驅動jar包中的實現類。

驅動包的選擇

  不同版本的數據庫需要不同版本的驅動包,不同版本的jdk也對應不同版本的驅動包

  mysql-connector-java與Mysql對應版本:

  mysql-connector-java與Java對應版本:

  我們可以使用select version();命令查看自己的mysql版本

  然后根據表即可選擇對應驅動包版本,我們就能去下載驅動包了:https://repo1.maven.org/maven2/mysql/mysql-connector-java/

在編程中導入jar驅動包

  我們以idea為例,創建一個包,然后把驅動jar包放進去,右鍵add as library即可

DriverManager類

  DriverManager是驅動管理對象,它用於管理一組JDBC驅動程序的基本服務。

  它主要有兩個功能:

注冊驅動

  注冊驅動就是告訴程序該使用哪個數據庫驅動jar包 ,我們使用的是DriverManager.registerDriver();方法,但在代碼上我們經常Class.forName("com.mysql.cj.jdbc.Driver");,那是因為Driver類中含有靜態代碼塊,當被加載成class類對象時會自動執行靜態代碼塊來注冊驅動

  需要注意的是mysql5版本后可以省略注冊驅動這一步,因為當你沒有注冊驅動的時候,會自動尋找jar驅動包的一個文件,找到對應驅動類

獲取數據庫連接

  我們通過static Connection getConnection(String url, String user, String password)方法獲取數據庫的連接

  其中user和password就是我們的用戶名和密碼,url就是指定的連接路徑

  url的語法一般為:jdbc:mysql://(ip地址(域名)):端口/數據庫名稱

Connection類

  Connection對象是數據庫連接對象,表示java程序與數據庫的連接

  Connection主要有兩個功能:

獲取執行sql的對象

  我們可以通過connection對象的Statement createStatement()方法獲取一個Statement對象用於執行sql語句

  當然也有PreparedStatement preparedStatement(String sql)獲取防止sql注入的PreparedStatement 對象

管理事務

  setAutoCommit(boolean autoCommit);設置為false,即開啟事務

  commit();方法可以提交事務

  rollback();對事物進行回滾

Statement對象

  Statement對象用於執行靜態sql語句,並返回其生成結果對象。

  boolean execute(String sql); 

  int executeUpdate(String sql); 用於執行更新語句,執行的是DML語句(insert、update、delete)、DDL(create、alter、drop)語句,返回的是影響的行數

  ResulSet executeQuery(String sql);用於執行select語句,返回的是一個結果集對象

ResulSet結果集對象

  ResulSet結果集對象其實就是把sql語句查詢出來的數據封裝成一個結果集對象

  本質就是一個迭代器,它首先執行查詢結果的表頭

  我們可以調用resultSet.next()方法,把光標移動到下一行,若下一行沒有數據,則不移動返回false

  我們可以通過resultSet的getxxx()方法獲取每一行的數據,參數寫想獲取的列的列名

PrepareStatment對象

  PrepareStatment是Statment的子接口,它也是用於執行sql的對象,但它是預編譯sql,所謂預編譯sql就是參數使用占位符?作為占位的sql語句,這樣做就可以防止用戶用sql注入進行攻擊。

  我們想要使用PrepareStatment的話,若sql語句是帶參的,我們就要將sql語句的參數用?表示,然后通過connect對象獲取PrepareStatment對象之后,通過setxxx方法設置sql語句中的參數,格式是setXXX(參數編號,參數值);參數編號從1開始

 

  

 

  

 

 

 

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM