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

JDBC從入門到精通二

編輯:關於JAVA

2. 7. 使普通任務簡化

我們希望普通的任務能夠是簡單的,而不一般的工作是可行的。

一個普通任務是指一個程序員執行一個簡單的沒有參數的SQL語句(例如:SELECT,INSERT,UPDATE,DELETE),然後(例如SELECT)處理返回的具有簡單類型的元組。一個具有傳入參數(IN parameter)的SQL語句也是普通的。

不那麼普通但是也是十分重要的情形是當程序員使用有INOUT,OUT參數的SQL語句。我們也需要支持讀寫幾兆字節對象的SQL語句,更特別一些的情形包括一個語句返回了多個結果集合。

我們希望元數據(Meatdata)的使用很少的,只是那些熟練的程序員以及開發工具才需要處理的問題。元數據存取函數以及動態類型數據存取函數在這個文檔末尾,一般的程序員可以不必關心這些章節。

2. 8. 不同的功能讓不同的方法(函數)來實現(“方法”的原文是:method,這樣翻譯是跟VB的)

一種界面設計風格是使用很少的過程,提供許多作為參數傳遞的控制標志,這樣它們可以用來影響很大一個范圍內的各種行為。來表達不同的功能。這趨向與使用很多的方法,但是每個方法都比較同意理解。

一般來說,Java內核類使用不同的方法(method)。這個步驟的主要優點是開始學習基本界面的程序員可以不必被那些與復雜功能相關的參數所困擾。我們力圖在JDBC接口上也采用相同的策略。一般來說采用不同的方法而不是采用不同的標志和多用途的方法。

3. 接口概貌 接口分為兩個層次,一個是面向程序開發人員的JDBC API。另外一個是底層的JDBC Driver API。

3. 1. JDBC API JDBC API 被描述成為彝族抽象的Java接口,似的應用程序遠可以對某個數據庫打開連接,執行SQL語句並且處理結果。最重要的接口是:

* java.sql.DriverManager //處理驅動的調入並且對產生新的數據庫連接提供支持。

* java.sql.Connection //代表對特定數據庫的連接。

* java.sql.Statement //代表一個特定的容器,來對一個特定的數據庫執行SQL語句。

* java.sql.ResultSet //控制對一個特定語句的行數據的存取。

其中java.sql.Statement又有兩個子類型:

1. java.sql.PreparedStatement  用於執行預編譯的SQL語句。

2. java.sql.CallableStatement  用於執行對一個數據庫內嵌過程的調用。

下面的章節對JDBC是如何運行的提供了更多描述,整個定義見第13章。另外第15章描述了系統如果獲取數據庫的元數據信息。

3. 2. JDBC Driver API

java.sql.Driver在第9章有完整的定義了。大部分JDBC驅動只需要完成這些JDBC API所定義的抽象類就可以了。特別地,所有的driver必須提供對java.sql.Connection, java.sql. State-ment, java.sql.Prepared-Statement, and java.sql.ResultSet的實現。

如果目標DBMS提供有OUT參數的內嵌過程,那麼還必須提供java.sql.CallableStatement 接口。 每個database driver必須提供一個類:java.sql.Driver以使得系統可以由 java.sql.DriverManager來管理。

一個顯然的driver是在ODBC之上提供對JDBC的實現,從而提供與ODBC接口的JDBC-ODBC 橋,就象前面的圖所顯示的.由於JDBC放在ODBC之後,所以實現起來簡單而且高效。

另外一個有用的驅動直接接觸數據庫無關的網絡協議。發布一個協議允許多個服務器實現的方法,例如在ODBC或者特定的DBMS上(盡管已經有了一些使用固定協議的產品,但是我們不打算對它們實現標准化。),是可取的。

4. JDBC使用場合

在看JDBC API之前了解一下典型的使用場合是有幫助的。通常有兩種情形必須分別對待:applet和application.

Before looking at specifics of the JDBC API,

an understanding of typical use scenarios is help-ful.

There are two common scenarios that must be treated

differently for our purposes: applets and applications.

4. 1. Applet

目前Java使用的最多的從網絡中下載的applet,它們作為web文件的一個部分。當中有數據庫存取applet和能夠使用JDBC來接觸數據庫的applet。例如,一個用戶可能下載一個顯示股票歷史價格圖的applet。這個applet通過internet來從關系數據庫中獲得股票歷史價格。

最一般的情況裡面,對applet的使用是通過不可靠的邊界的。例如從另外一個公司或者Internet上獲得這些applet。於是稱這個情況為"Internet"場合。然而applet也可能通過局域網下載。在這個情況裡面,客戶機的安全都還是一個問題。

典型的applet在幾個方面與傳統的數據庫應用程序有所不同:

1).不可靠的applet被嚴格地限制在他們被允許執行的的操作上。特別地,不允許他們存取本地的文件,切不允許他們對任意的數據庫建立網絡連接。

2). 就標識和連接網上數據庫來說,Internet環境裡面的applet面臨新的問題。

3).當數據庫可能與你相隔萬裡的時候,效率的考慮也有所不同了。與局域網相比,Internet上數據庫applet可能會碰到十分不同的反應時間。

4. 2. Application

Java也可以用來建立普通的應用,從而想一般的應用一樣在客戶機上使用。我們相信隨著開發工具越來越多,人們開始認識到提高程序生產效率的必要性,以及Java的其他優點,Java的這種用法將越來越流行。

在這種方式裡面,Java的代碼是可以信賴的,且被允許讀寫文件打開網絡連接等等,就想其他的應用程序代碼一樣。

也許這些Java應用使用的最多的是在一個公司內部或者在Intranet上,所以不妨成為Intranet場合。例如一個公司希望利用Java及其GUI構件工具來建立他的基於合作數據模式的合作軟件。這些應用程序將存取局域網或者廣域網的數據。Java應用可以作到這些。

Java應用程序場合和Intranet場合與applet場合有諸多不同。例如標定一個數據庫最自然的方式是用一個數據庫的名字,就象"Customers" 和"Personnel"這樣。然後用戶希望系統能夠定位具體的機器,DBMS,JDBC driver,和Java應用程序。

4. 3. 其他場合

還有其他一些有趣的場合:

1). 已驗證的applet(Trusted applets)是指那些已經被Java虛擬機器認定是可以信賴的applet。他們之所以被認為是可信的是因為他們已經對上了特定的密匙,或者用戶認為從特定來源來的applet是可信的。

在安全的方面上他們與應用(appliction)相同,但是其他方面(例如定位一個數據庫)與則與applet相似。

2). 與直接從Java GUI出發用客戶/服務器模式來度曲DBMS服務器不同,三層存取方式可能被使用。在這個場合裡面,Java應用程序對中間層的服務發出調用,中間層的服務在網上,它又再去調用數據庫。這些調用可能通過RPC (remote procedure call)或者ORB (object request broker )。

在這兩種場合裡面,中間層最好使用一個對象變化。我們希望三層結構會變得越來越普遍,因為對於MIS管理者來說,這可以使得他們有機會在公共數據庫上顯式地定義合法操作等。同時三層結構可以提供許多效率上的好處。

目前中間層一般用C或者C++這樣的語言來完成。通過優化編譯器把把Java 字節代碼翻譯成為高效的機器代碼,中間層也可以用Java來實現。Java有許多優良特性(健壯性,安全性,多線程)可以達到中間層需要達到的目的。

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