程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 關於Java的JDBC編程總結

關於Java的JDBC編程總結

編輯:關於JAVA

JDBC編程總結

JDBC是Java操作數據庫的基本技術,並不是唯一技術。

Hibernate、TopLink等OR Mapping操作數據庫的技術都是建立JDBC技術之上的,實際來說,他們的性能和JDBC是有很大差距的,但反過來說,如果JDBC用不好,還不如hibernate呢。暫且不說這些孰優孰劣的話了,再次主要是對Java的基礎技術做個總結,以加深認識。

一、JDBC的基本原理JDBC是Java操作數據庫的技術規范。

他實際上定義了一組標准的操作數據庫的接口。為了能讓Java操作數據庫,必須要有實現了JDBC這些接口的類,不同的數據庫廠商為了讓Java語言能操作自己的數據庫,都提供了對JDBC接口的實現――這些實現了JDBC接口的類打成一個jar包,就是我們平時看到的數據庫驅動。由於不同的數據庫操作數據的機制不一樣,因此JDBC的具體實現也就千差萬別,但是你作為java程序員,你只和Java JDBC的接口打交到,才不用理會他們怎麼實現的!呵呵,現在知道JDBC驅動是怎麼回事了。當然,這些類可以自己去寫――如果你很牛!

二、JDBC編程的步驟為了說明這個步驟

假設你要通過Java程序執行一個sql查詢,你需要按照如下的步驟去走:

1、創建指定數據庫的URL這個URL實際上還是統一資源定位器,裡面包含了一些連接數據庫的信息:數據庫類型、端口、驅動類型、連接方式、數據庫服務器的ip(或名字)、數據庫名(有的是別名)等。其格式如下:

jdbc:subProtocol:subName://DBserverIP:port/DatabaseName例如mysql的一個url:jdbc:MySQL://192.168.3.143:3306/zfvims

2、加載驅動類到JVM內存區域中有兩種方法:一種是用Class.forName()方法加載指定的驅動程序。

一種是將驅動程序添加到Java.lang.System的屬性jdbc.drivers中。

最後說明一點,有時候添加到系統的CLASSPATH環境變量是不行的,原因是在使用JDBC接口操作數據庫前,JVM還沒有加載上驅動。

Class.forName("com.MySQL.jdbc.Driver")

3、、通過DriverManager類管理驅動、創建數據庫連接。

DriverManager類作用於程序員和JDBC驅動程序之間,提供注冊管理驅動建立連接細節等方法,它所有成員均為靜態的。通過其getConnection方法會創建一個JDBC Connection對象。

Connection conn=DriverManager.registerDriver("jdbc:MySQL://192.168.3.143:3306/zfvims","lavasoft","passWord");

4、Connection類――數據庫連接這裡所說的Connection類實際上是實現了JDBC的Connection接口的類,這個類一般都是jdbc驅動程序實現了。Connection類表示了數據庫連接,通過其對象可以獲取一個獲取數據庫和表等數據庫對象的詳細信息。但更多的是通過這個連接更進一步去向數據庫發送SQL語句去執行,下面會講到。

數據庫的連接的建立是很耗費資源和時間的,因此在不用連接的情況下要通過其close()方法將連接關閉,以釋放系統資源。

5、Statement類――發送並執行(靜態)SQL語句通過Connection對象的createStatement()方法可以創建一個Statement對象,通過該對象的方法可以(發送)並執行一個靜態sql語句。如果要執行動態的sql(sql串中有參數),那麼就用PreparedStatement類,用法和Statement類似。

Statement stmt=con.createStatement()

6、ResultSet類――結果集當你執行一條sql查詢後,就會產生一個查詢結果。ResultSet就表示數據庫結果集的數據表,通常通過執行查詢數據庫的語句生成。ResultSet 對象具有指向其當前數據行的指針。通過ResultSet對象不但可以結果集數據,還可以獲取結果集表的列名、數據類型等信息。

ResultSet rs=stmt.executeQuery(sql)

7、關閉數據庫連接當對sql操作完成後,應該關閉數據庫連接,這樣避免因為連接未關閉而耗費系統資源,如果每次都不關閉,多次操作將建立多個連接,最終數據庫連接會達到最大限度,或者耗盡系統的資源,從而導致應用崩潰。因此要注意關閉資源,尤其是數據庫連接。

三、JDBC編程最基本的實例

下面通過一個執行一條簡單的MySQL查詢來說名上面的JDBC編程的一般方法和步驟。

public class TestJDBC(){ public static Connection getConnectionByJDBC() { Connection conn = null;try { //裝載驅動類Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) { System.out.println("裝載驅動異常!");e.printStackTrace();} try { //建立JDBC連接conn = DriverManager.getConnection(""jdbc:MySQL://192.168.3.143:3306/zfvims","lavasoft","passWord");} catch (SQLException e) { System.out.println("鏈接數據庫異常!");e.printStackTrace();} return conn;}

public static String test() { String sqlx = "select t.code,t.name from province t order by t.code asc";try { //創建一個JDBC聲明Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);//執行查詢ResultSet = stmt.executeQuery(sqlx);while (rs.next()) { String code = rs.getString("code");String name = rs.getString("name");System.out.println(code+name);} } catch (SQLException e) { System.out.println(e.getMessage());e.printStackTrace();} finally { //預防性關閉連接(避免異常發生時在try語句塊關閉連接沒有執行)

try { if (conn != null) conn.close();} catch (SQLException e) { System.out.println(e.getMessage());e.printStackTrace();} public static void main(String args[]) { new TestJDBC()。test();}

四、JDBC的陷阱

1、conn一定要在finally語句塊進行關閉。

2、Statement、ResultSet盡可能縮小其變量作用域。

3、Statement可以使用多次,定義多個。一個Statement對象只和一個ResultSet對象關聯,並且是最後一次查詢。

4、ResultSet在Connection、ResultSet關閉後自動關閉。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved