JDBC詳解

一、相關概念

1.什么是JDBC

JDBC(Java Data Base Connectivity,java數據庫連接)是一種用于執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序。

2.數據庫驅動

我們安裝好數據庫之后,我們的應用程序也是不能直接使用數據庫的,必須要通過相應的數據庫驅動程序,通過驅動程序去和數據庫打交道。其實也就是數據庫廠商的JDBC接口實現,即對Connection等接口的實現類的jar文件。

二、常用接口

1.Driver接口

Driver接口由數據庫廠家提供,作為java開發人員,只需要使用Driver接口就可以了。在編程中要連接數據庫,必須先裝載特定廠商的數據庫驅動程序,不同的數據庫有不同的裝載方法。如:

裝載MySql驅動:Class.forName("com.mysql.jdbc.Driver");

裝載Oracle驅動:Class.forName("oracle.jdbc.driver.OracleDriver");

2.Connection接口

Connection與特定數據庫的連接(會話),在連接上下文中執行sql語句并返回結果。DriverManager.getConnection(url,?user,?password)方法建立在JDBC URL中定義的數據庫Connection連接上。

連接MySql數據庫:Connection conn =?DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");

連接Oracle數據庫:Connection conn =?DriverManager.getConnection("jdbc:oracle:thin:@host:port:database", "user", "password");

連接SqlServer數據庫:Connection conn =?DriverManager.getConnection("jdbc:microsoft:sqlserver://host:port; DatabaseName=database", "user", "password");

常用方法:

createStatement():創建向數據庫發送sql的statement對象。

prepareStatement(sql) :創建向數據庫發送預編譯sql的PrepareSatement對象。

prepareCall(sql):創建執行存儲過程的callableStatement對象。

setAutoCommit(boolean?autoCommit):設置事務是否自動提交。

commit() :在鏈接上提交事務。

rollback() :在此鏈接上回滾事務。

3.Statement接口

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

三種Statement類:

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

PreparedStatement :繼承自Statement接口,由preparedStatement創建,用于發送含有一個或多個參數的SQL語句。PreparedStatement對象比Statement對象的效率更高,并且可以防止SQL注入,所以我們一般都使用PreparedStatement。

CallableStatement:繼承自PreparedStatement接口,由方法prepareCall創建,用于調用存儲過程。

常用Statement方法:

execute(String?sql):運行語句,返回是否有結果集

executeQuery(String?sql):運行select語句,返回ResultSet結果集。

executeUpdate(String?sql):運行insert/update/delete操作,返回更新的行數。

addBatch(String?sql) :把多條sql語句放到一個批處理中。

executeBatch():向數據庫發送一批sql語句執行。

4.ResultSet接口

ResultSet提供檢索不同類型字段的方法,常用的有:

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):獲取在數據庫里任意類型的數據。

ResultSet還提供了對結果集進行滾動的方法:

next():移動到下一行

Previous():移動到前一行

absolute(int row):移動到指定行

beforeFirst():移動resultSet的最前面。

afterLast() :移動到resultSet的最后面。

使用后依次關閉對象及連接:ResultSet →?Statement →?Connection

三、使用JDBC的步驟

加載JDBC驅動程序 →建立數據庫連接Connection →?創建執行SQL的語句Statement →?處理執行結果ResultSet →?釋放資源

1.注冊驅動 (只做一次)

方式一:Class.forName(“com.MySQL.jdbc.Driver”);

推薦這種方式,不會對具體的驅動類產生依賴。

方式二:DriverManager.registerDriver(com.mysql.jdbc.Driver);

會造成DriverManager中產生兩個一樣的驅動,并會對具體的驅動類產生依賴。

2.建立連接

Connection conn = DriverManager.getConnection(url, user, password);

URL用于標識數據庫的位置,通過URL地址告訴JDBC程序連接哪個數據庫,URL的寫法為:

其他參數如:useUnicode=true&characterEncoding=utf8

3.創建執行SQL語句的statement

4.處理執行結果(ResultSet)

5.釋放資源

四、事務(ACID特點、隔離級別、提交commit、回滾rollback

1.批處理Batch

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉自:http://www.cnblogs.com/erbing/p/5805727.html一、相關概念 1.什...
    小沙鷹168閱讀 1,729評論 0 0
  • 一、JDBC執行步驟 搭建環境 :在mysql中創建一個庫,并創建user表和插入表的數據。新建一個Java工程,...
    暗香撫動閱讀 703評論 0 0
  • JDBC概述 在Java中,數據庫存取技術可分為如下幾類:JDBC直接訪問數據庫、JDO技術、第三方O/R工具,如...
    usopp閱讀 3,557評論 3 75
  • JDBC簡介 SUN公司為了簡化、統一對數據庫的操作,定義了一套Java操作數據庫的規范,稱之為JDBC。JDBC...
    奮斗的老王閱讀 1,541評論 0 51
  • 本人的環境為Myeclipse10、MySQL5.7.15 本文包括:簡介JDBC編程步驟打通數據庫程序詳解—Dr...
    廖少少閱讀 3,998評論 7 39