華南木棉站關於JDBC的介紹
發信人: yeal (破光盤), 信區: JAVA
標 題: JDBC(1)
發信站: 華南網木棉站 (Mon Feb 1 00:03:32 1999), 轉信
1. 介紹
許多開發者和用戶都在尋找Java程序中訪問數據庫的便捷方
法。由於Java是一個健壯,安全,易於使用的,易於理解且可
以從網絡中自動download ,所以它成為開發數據庫應用的一種
良好的語言基礎。它提供了C,C++,Smalltalk, BASIC, COBOL,
and 4GLs的許多優點。許多公司已經開始在Java與DBMS的連接
方面做工作。
許多Java應用開發者都希望能夠編寫獨立於特定DBMS的程
序,而我們也相信一個獨立於DBMS的接口將使得與各種各樣
DBMS連接變得最為便捷,開發更加迅速。所以我們認為定義
一個通用的SQL數據庫存取框架,在各種各樣的提供數據庫連
接模塊上提供統一的界面是十分有意義的。這使程序員可以面
對單一的數據庫界面,使數據庫無關的Java工具和產品成為可
能,使得數據庫連接的開發者可以提供各種各樣的連接方案。
我們看到我們定義一個通用低層的,支持基本SQL功能的Java
DataBase Connectivity (JDBC)API的緊迫任務。
幸運的是我們不必從頭設計一個SQL API。我們可以把我們的
工作建立在
X/Open SQL CLI (調用層接口)之上(它也是Microsofts ODBC
的基礎)。
我們主要任務是定義一個自然的Java接口來與X/Open CLI中定
義的基本的抽象層和概念連接。
JDBC API得到數據庫開發廠商,連接開發廠商,ISV,以及應用
開發者的支持是十分重要的。我們相信把我們的工作建立在
ODBC抽象層的基礎上將JDBC更加容易得到大家的接受。而且
從技術上來說,ODBC是我們設計工作的一個良好基礎。
因為ODBC是一個C語言接口,所以ODBC在Java中直接使用不
適當。從Java中來調用C代碼在安全性,健壯性,實現的方便,
可移植性等等方面有許多不便。它使得Java在這些方面的許多
優點得不到發揮。
我們已經在短期裡面實現了一個建立在ODBC上的API。長遠來
看,我們可以通過其他方式提供實現。
1.1. 注意
我們非常感謝在數據庫,數據庫連接和數據庫工具領域的許多
早期的工作者。他們為JDBC的早期草案提供了很好的意見和
建議。他們的工作對本規范起了不可估量的作用。
--
※ 來源:.華南網木棉站 bbs.gznet.edu.cn.[FROM: 202.38.240.203]
--------------------------------------------------------------------------------
[返回首頁] [討論區]
發信人: yeal (破光盤), 信區: JAVA
標 題: JDBC(2)
發信站: 華南網木棉站 (Mon Feb 1 00:04:05 1999), 轉信
2. 目標與哲學
這個部分描述了指引這個API開發的目標以及哲學。
2.1. SQL 級 API
我們的主要目標是為Java定義一個“調用級”(call-level)的SQL
接口。著意味著我們主要的注意力集中在執行原原本本的SQL
語句並且取回結果。我們預計高層的API也將被定義,這些可
能將建立在基層的接口上。
這些高層接口包括象直接地、透明地把表裡面的數據影射到
Java類裡面,用語法樹表示更加通用的查詢,以及Java內嵌的
SQL語法。
我們希望大量的應用開發工具將使用我們的API。然而我們也
希望程序員能夠使用我們的API,尤其是目前這樣在Java裡沒
有任何其他手段(應該是說數據庫訪問手段)的情況下。
2.2. 遵循SQL
數據庫系統支持各式各樣的SQL語法和語義,它們相互之間在
比較高級的功能例如外部連接,內嵌過程等方面並不一致,盡
管我們能夠盼望著隨時間的推移這些部分的SQL可以獲得標准
化。同時我們采取這樣的態度與立場:
In fact, an application query need not even be SQL, or it may be a
specialized derivative of SQL, e.g. for document or image queries,
designed for specific DBMSs. In order to pass JDBC compliance tests and to be
called "JDBC
COMPLIANT ? we require that a driver support at least ANSI
SQL-2 Entry Level. This gives applications that want wide
portability a guaranteed least common denominator. We believe
ANSI SQL-2 Entry Level is reasonably powerful and is reasonably
widely supported today.
l JDBC允許查詢表達式直接傳遞到底層的數據驅動,這樣一
個程序可以獲得盡量多的SQL功能,但是可能被DBMS拒
絕。事實上,一個程序的查詢甚至可以不是SQL的,或者
是SQL的一個特殊演化,例如:為專門數據庫設計的文本
或者圖形查詢。
l 為了通過JDBC兼容的測試,並且能夠被稱為JDBC兼容,
我們要求一個驅動至少支持ANSI SQL-2的標准。這使得那
些需要廣泛移植性的程序獲得一個最小的分母(這句話的原
文是:This gives applications that want wide portability a
guaranteed least common denominator.)。我們相信ANSI
SQL-2是足夠強大的,並且是得到足夠支持的。
--
※ 來源:.華南網木棉站 bbs.gznet.edu.cn.[FROM: 202.38.240.203]
--------------------------------------------------------------------------------
[返回首頁] [討論區]
發信人: yeal (破光盤), 信區: JAVA
標 題: JDBC(3)
發信站: 華南網木棉站 (Mon Feb 1 00:04:36 1999), 轉信
2.3. JDBC必須可以建立在現有的數據庫接口上
我們必須能夠保證 JDBC SQL API 能夠建立在普通的SQL
API上,尤其是ODBC。這些要求已經對這個規范的一些部分
產生了影響,尤其是對傳出參數(OUT parameter)和大數據塊的
處理。
2.4. 必須保證這個接口與JAVA系統的其他部分保持一致
目前對JAVA的積極回應已經十分熱烈。很大程度上是由於這
個語言標准以及標准運行時庫被認為是一致,簡單和強大的。
我們將盡我們所能,提供這個Java數據庫接口,這個接口將建
我們希望普通的任務能夠是簡單的,而不一般的工作是可行
的。
一個普通任務是指一個程序員執行一個簡單的沒有參數的SQL
語句(例如:SELECT,INSERT,UPDATE,DELETE),然後(例如
SELECT)處理返回的具有簡單類型的元組。一個具有傳入參數
(IN parameter)的SQL語句也是普通的。
不那麼普通但是也是十分重要的情形是當程序員使用有
INOUT,OUT參數的SQL語句。我們也需要支持讀寫幾兆字節
對象的SQL語句,更特別一些的情形包括一個語句返回了多個
結果集合。
我們希望元數據(Meatdata)的使用很少的,只是那些熟練的程序
員以及開發工具才需要處理的問題。元數據存取函數以及動態
類型數據存取函數在這個文檔末尾,一般的程序員可以不必關
心這些章節。
2.8. 不同的功能讓不同的方法(函數)來實現
(“方法”的原文是:method,這樣翻譯是跟VB的)
一種界面設計風格是使用很少的過程,提供許多作為參數傳遞
的控制標志,這樣它們可以用來影響很大一個范圍內的各種行
為。來表達不同的功能。這趨向與使用很多的方法,但是每個
方法都比較同意理解。
一般來說,Java內核類使用不同的方法(method)。這個步
驟的主要優點是開始學習基本界面的程序員可以不必被那些與
復雜功能相關的參數所困擾。我們力圖在JDBC接口上也采用
相同的策略。一般來說采用不同的方法而不是采用不同的標志
和多用途的方法。
--
※ 來源:.華南網木棉站 bbs.gznet.edu.cn.[FROM: 202.38.240.203]
--------------------------------------------------------------------------------
[返回首頁] [討論區]
發信人: yeal (破光盤), 信區: JAVA
標 題: JDBC(4)
發信站: 華南網木棉站 (Mon Feb 1 00:05:20 1999), 轉信
3. 接口概貌
接口分為兩個層次,一個是面向程序開發人員的JDBC API?
另外一個是底層的JDBC Driver API。
3.1. JDBC API
JDBC API 被描述成為彝族抽象的Java接口,似的應用程序遠
可以對某個數據庫打開連接,執行SQL語句並且處理結果?
錯誤! 嵌入對象無效。
最重要的接口是:
l java.sql.DriverManager
處理驅動的調入並且對產生新的數據庫連接提供支持。
l java.sql.Connection
代表對特定數據庫的連接
l java.sql.Statement
代表一個特定的容器,來對一個特定的數據庫執行SQL語句。
l java.sql.ResultSet
控制對一個特定語句的行數據的存取
其中 java.sql.Statement 又有兩個子類型:
1. java.sql.PreparedStatement
用於執行預編譯的SQL語句。
2. java.sql.CallableStatement
用於執行對一個數據庫。
typical use scenarios is help-ful. There are two common scenarios
that must be treated differently for our purposes: applets and
applications.
在看JDBC API之前了解一下典型的使用場合是有幫助的。通
常有兩種情形必須分別對待:applet和application.
--
※ 來源:.華南網木棉站 bbs.gznet.edu.cn.[FROM: 202.38.240.203]
--------------------------------------------------------------------------------
[返回首頁] [討論區]
發信人: yeal (破光盤), 信區: JAVA
標 題: JDBC(5)
發信站: 華南網