posts - 15,  comments - 34,  trackbacks - 27

          目錄

          1. 什么是 JDBC 3.0 API?
          2. JDBC-ODBC Bridge 是否支持 JDBC 3.0 API 中的新特性?
          3. JDBC-ODBC Bridge 是否可以與 applet 一起使用?
          4. 我怎樣開始調(diào)試與 JDBC API 有關(guān)的問題?
          5. 我如何可以使用 JDBC API 通過網(wǎng)絡(luò)訪問像 Microsoft Access 這樣的桌面數(shù)據(jù)庫?
          6. 有哪些可用的支持 JDBC 技術(shù)的驅(qū)動(dòng)程序?
          7. 有哪些可用的 JDBC API 文檔?
          8. 是否有不可與 JDBC-ODBC Bridge 一起工作的 ODBC 驅(qū)動(dòng)程序?
          9. 什么會(huì)引起“No suitable driver”(沒有合適的驅(qū)動(dòng)程序)錯(cuò)誤?
          10. 為什么不能找到 java.sql.DriverManager 類?
          11. 我如何一次檢索一整行數(shù)據(jù),而不針對(duì)每一列都調(diào)用一次 ResultSet.getXXX 方法?
          12. 為什么 ODBC 驅(qū)動(dòng)程序管理器會(huì)返回”Data source name not found and no default driver specified Vendor: 0”(數(shù)據(jù)源名稱沒有找到并且沒有默認(rèn)的驅(qū)動(dòng)程序指定供應(yīng)商:0)?
          13. 是否所有需要的 JDBC 驅(qū)動(dòng)程序都將創(chuàng)建到 JDK 的數(shù)據(jù)庫部分的連接?
          14. JDBC-ODBC Bridge 是多線程的嗎?      
          15. JDBC-ODBC Bridge 是否在每個(gè)連接中支持多個(gè)并發(fā)的打開語句?
          16. 當(dāng) next 方法工作時(shí),我為什么不能調(diào)用 ResultSet 方法 afterLastbeforeFirst?
          17. 我如何可以檢索一個(gè) String 或其他對(duì)象類型,而不用每次創(chuàng)建一個(gè)新對(duì)象?
          18. 在 JDBC API 中有一個(gè)方法 getColumnCount。是否有類似的方法來查找結(jié)果集中的行數(shù)?
          19. 我想下載 Java 2 SDK, Standard Edition (以前的 JDK 1.2)的 JDBC-ODBC Bridge。我是 JDBC API 的初學(xué)者,我想從 Bridge 開始。我該怎么做?
          20. 如果我使用 JDBC API,我有必要使用 ODBC 支配(ODBC underneath)嗎?
          21. 一旦有了 Sun 的 Java 2 SDK, Standard Edition,連接數(shù)據(jù)庫還需要做其他什么嗎?

          1. 什么是 JDBC 3.0 API?

          JDBC 3.0 API 是 JDBC API 的最后更新。它包含了許多特性,包括可滾動(dòng)的結(jié)果集和 SQL:1999 數(shù)據(jù)類型。

          2. JDBC-ODBC Bridge 是否支持 JDBC 3.0 API 中的新特性?

          JDBC-ODBC Bridge 提供了 JDBC 3.0 API 的有限子集。

          3. JDBC-ODBC Bridge 是否可以與 applet 一起使用?

          運(yùn)行于瀏覽器(比如 Netscape Navigator)中的不受信任的 applet 不允許使用 JDBC-ODBC Bridge。JDBC-ODBC Bridge 不允許不受信任的代碼出于安全方面的考慮而調(diào)用它。這是好的方面,因?yàn)樗砻饔蔀g覽器下載的不受信任 applet 不會(huì)通過調(diào)用 ODBC 來回避 Java 安全。 記住 ODBC 是本機(jī)代碼,所以一旦調(diào)用 ODBC,Java 編程語言就不能保證安全沖突不會(huì)發(fā)生。另一方面,Pure Java JDBC 驅(qū)動(dòng)程序與 applet 一起工作得很好。它們是完全可以下載的,而且不要求任何的客戶端配置。

          最后,我想提一下的是,可以將 JDBC-ODBC Bridge 與 applet 一起使用,因?yàn)?applet 瀏覽器假定 applet 是受信任的,因此,applet 會(huì)在 applet 瀏覽器中運(yùn)行。通常關(guān)閉 applet 安全是危險(xiǎn)的,但在某些經(jīng)過控制的場(chǎng)合,比如對(duì)于只在安全 Intranet 環(huán)境中使用的 applet,它可能是合適的。記住如果您選擇這個(gè)選項(xiàng),就會(huì)碰到警告,一有可能避免安全問題,就使用全 Java (all-Java) JDBC 驅(qū)動(dòng)程序。

          4. 我怎樣開始調(diào)試與 JDBC API 有關(guān)的問題?

          找出 JDBC 調(diào)用正在做什么的一個(gè)好的辦法是啟用 JDBC 跟蹤。JDBC 跟蹤包含活動(dòng)的詳細(xì)列表,這些活動(dòng)發(fā)生在與 JDBC 操作有關(guān)的系統(tǒng)中。

          如果您使用 DriverManager 工具包來創(chuàng)建數(shù)據(jù)庫連接,就使用 DriverManager.setLogWriter 方法來啟用 JDBC 操作的跟蹤。如果您使用 DataSource 對(duì)象來獲取連接,就使用 DataSource.setLogWriter 方法來啟用跟蹤。(對(duì)于集中連接,您使用 ConnectionPoolDataSource.setLogWriter 方法;對(duì)于參與分布式事務(wù)的連接,使用 XADataSource.setLogWriter 方法。)

          5. 我如何可以使用 JDBC API 通過網(wǎng)絡(luò)訪問像 Microsoft Access 這樣的桌面數(shù)據(jù)庫?

          目前多數(shù)桌面數(shù)據(jù)庫要求使用 ODBC 支配的 JDBC 解決方案。這是因?yàn)檫@些數(shù)據(jù)庫產(chǎn)品的供應(yīng)商還沒有實(shí)現(xiàn)全 Java JDBC 驅(qū)動(dòng)程序。

          最佳辦法是使用支持想用的 ODBC 和數(shù)據(jù)庫的商業(yè) JDBC 驅(qū)動(dòng)程序。參見 JDBC 驅(qū)動(dòng)程序頁面,獲取可用的 JDBC 驅(qū)動(dòng)程序列表。

          來自 Sun Java Software 的 JDBC-ODBC Bridge 沒有單獨(dú)提供對(duì)桌面數(shù)據(jù)庫的訪問。JDBC-ODBC Bridge 將 ODBC 作為本地 DLL 加載,而且針對(duì)桌面數(shù)據(jù)庫(如 Access)的典型 ODBC 驅(qū)動(dòng)器不在網(wǎng)絡(luò)上。不過,JDBC-ODBC Bridge 可以與 RMI-JDBC Bridge 一起使用,以便通過網(wǎng)絡(luò)訪問像 Access 這樣的數(shù)據(jù)庫。 這種 RMI-JDBC-ODBC 解決方案是免費(fèi)的。

          6. 有哪些可用的支持 JDBC 技術(shù)的驅(qū)動(dòng)程序?

          參閱 有關(guān)支持 JDBC 技術(shù)驅(qū)動(dòng)程序的 Web 頁,獲取當(dāng)前可用的驅(qū)動(dòng)程序列表。

          7. 有哪些可用的 JDBC API 文檔?

          參閱 JDBC 技術(shù)主頁,該頁面中有一些鏈接指向有關(guān) JDBC 技術(shù)的信息。這個(gè)頁面鏈接到有關(guān)特性和優(yōu)點(diǎn)的信息、一系列新特性、有關(guān)入門介紹的一節(jié)、在線教程和有關(guān)驅(qū)動(dòng)程序要求的一節(jié)等信息,它還鏈接到規(guī)范和 javadoc 文檔。

          8. 是否有不可與 JDBC-ODBC Bridge 一起工作的 ODBC 驅(qū)動(dòng)程序?

          多數(shù) ODBC 2.0 驅(qū)動(dòng)程序應(yīng)當(dāng)與 Bridge 一起工作。由于 ODBC 驅(qū)動(dòng)程序之間在功能上有一些區(qū)別,因此 Bridge 的功能可能會(huì)受到影響。Bridge 與流行的 PC 數(shù)據(jù)庫一起工作,比如 Microsoft Access 和 FoxPro。

          9. 什么會(huì)引起“No suitable driver”(沒有合適的驅(qū)動(dòng)程序)錯(cuò)誤?

          在調(diào)用 DriverManager.getConnection 方法期間,經(jīng)常會(huì)出現(xiàn)“No suitable driver”的錯(cuò)誤。 原因可能是在調(diào)用 getConnection 方法之前,加載合適的 JDBC 驅(qū)動(dòng)程序失敗,或者它可能正在指定一個(gè)非法的 JDBC URL——一個(gè)不被 JDBC 驅(qū)動(dòng)程序識(shí)別的 URL。最好的辦法是檢查 JDBC 驅(qū)動(dòng)程序的文檔或聯(lián)系您的 JDBC 驅(qū)動(dòng)程序供應(yīng)商,前提是您懷疑正在指定不被 JDBC 驅(qū)動(dòng)程序識(shí)別的 URL。

          此外,當(dāng)您正在使用 JDBC-ODBC Bridge 時(shí),如果不能加載 Bridge 所需的一個(gè)或多個(gè)共享庫,這種錯(cuò)誤就可能發(fā)生。如果您認(rèn)為這是原因所在,就檢查您的配置,以確保 Bridge 能夠訪問共享庫。

          10. 為什么不能找到 java.sql.DriverManager 類?

          這個(gè)問題可能是由于在支持 JDK 1.0.2 的瀏覽器(如 Netscape Navigator 3.0)中運(yùn)行 JDBC applet 引起的。JDK 1.0.2 不包含 JDBC API,因此在瀏覽器中運(yùn)行的 Java 虛擬機(jī)通常不能找到 DriverManager 類。

          這里有一個(gè)解決方案,它不要求在 Web 客戶端上做任何附加的配置。記住,出于安全方面的考慮,java.* 包 中的類不能由多數(shù)瀏覽器下載。因此,許多全 Java 驅(qū)動(dòng)程序供應(yīng)商提供了不同版本的 java.sql.*類,并將它們命名為 jdbc.sql.*,而且也一起提供了使用了這些修改后的類的驅(qū)動(dòng)程序版本。如果在 applet 代碼中導(dǎo)入 jdbc.sql.* 而不是 java.sql.*,并在 applet 的基本代碼 (codebase) 中添加由 JDBC 驅(qū)動(dòng)程序供應(yīng)商提供的 jdbc.sql.* 類,那么 applet 所需的所有 JDBC 類就可以在運(yùn)行時(shí)由瀏覽器下載,包括 DriverManager 類。

          這個(gè)解決方案將使得 applet 能夠在支持 JDK 1.0.2 的任何客戶端瀏覽器中工作。applet 也可以在支持 JDK 1.1 的瀏覽器中工作,不過出于性能方面的考慮,可能想切換到 JDK 1.1 類。也請(qǐng)記住,這里描繪的解決方案只是一個(gè)例子,其他的解決方案也是可能的。

          11. 我如何一次檢索一整行數(shù)據(jù),而不是針對(duì)每一列都調(diào)用一次 ResultSet.getXXX 方法?

          ResultSet.getXXX 方法是從 ResultSet 對(duì)象中檢索數(shù)據(jù)的惟一方法,這表明必須對(duì)行中的每一列發(fā)出一個(gè)調(diào)用。然而這不大可能是導(dǎo)致性能問題的原因所在,因?yàn)楹茈y看到,在任何場(chǎng)合中,如何提取一列,而不用至少開銷一次函數(shù)調(diào)用。我們歡迎開發(fā)人員提供有關(guān)本主題的信息。

          12. 為什么 ODBC 驅(qū)動(dòng)程序管理器會(huì)返回“Data source name not found and no default driver specified Vendor: 0”(數(shù)據(jù)源名稱沒有找到并且沒有默認(rèn)的驅(qū)動(dòng)程序指定供應(yīng)商:0)?

          在嘗試使用 Bridge 連接到數(shù)據(jù)庫期間,這種類型的錯(cuò)誤就可能發(fā)生。首先,請(qǐng)注意錯(cuò)誤是來自 ODBC 驅(qū)動(dòng)程序管理器。這表明 Bridge——普通的 ODBC 客戶端——已經(jīng)成功調(diào)用 ODBC,因此問題不是由于本地庫不存在而導(dǎo)致的。在這種情形下,它表明錯(cuò)誤是由于如下事實(shí)而導(dǎo)致的:需要在客戶計(jì)算機(jī)上配置 ODBC DSN(數(shù)據(jù)源名稱)。開發(fā)人員經(jīng)常會(huì)忘記這樣做,認(rèn)為 Bridge 應(yīng)該會(huì)找到遠(yuǎn)程服務(wù)器計(jì)算機(jī)上配置的 DSN。

          13. 是否所有需要的 JDBC 驅(qū)動(dòng)程序都將創(chuàng)建到 JDK 的數(shù)據(jù)庫部分的連接?

          不是。除了 JDBC-ODBC Bridge 外,沒有任何的支持 JDBC 技術(shù)的驅(qū)動(dòng)程序與 JDK 1.1.x 或 Java 2 Platform 版本捆綁在一起。因此,開發(fā)人員需要獲取驅(qū)動(dòng)程序并安裝它,然后才可以連接到數(shù)據(jù)庫。我們正在考慮在將來捆綁支持 JDBC 技術(shù)的驅(qū)動(dòng)程序。

          14. JDBC-ODBC Bridge 是多線程的嗎?

          不是。JDBC-ODBC Bridge 不支持來自不同線程的并發(fā)訪問。JDBC-ODBC Bridge 使用同步方法來序列化它對(duì) ODBC 的所有調(diào)用。多線程 Java 程序可以使用 Bridge,但它們不能得到多線程的優(yōu)點(diǎn)。此外,死鎖可能在數(shù)據(jù)庫持有的鎖和 Bridge 使用的信號(hào) (semaphore) 之間發(fā)生。我們正考慮將來刪除同步方法。原來添加它們的目的是,使得對(duì)于編寫使用單線程 ODBC 驅(qū)動(dòng)程序的 Java 程序的人員來說,事情變得簡(jiǎn)單了。

          15. JDBC-ODBC Bridge 是否在每個(gè)連接中支持多個(gè)并發(fā)的打開語句?

          不是。當(dāng)使用 JDBC-ODBC Bridge 時(shí),每個(gè)連接只能打開一個(gè) Statement 對(duì)象。

          16. 當(dāng) next 方法工作時(shí),我為什么不能調(diào)用 ResultSet 方法 afterLastbeforeFirst?

          您可能正在使用針對(duì) JDBC 1.0 API 實(shí)現(xiàn)的驅(qū)動(dòng)程序。需要升級(jí)到 JDBC 2.0 驅(qū)動(dòng)程序,它實(shí)現(xiàn)了可滾動(dòng)結(jié)果集。同時(shí)保證了代碼已經(jīng)創(chuàng)建可滾動(dòng)結(jié)果集,并且正在使用的 DBMS 支持它們。

          17. 我如何可以檢索 String 或其他對(duì)象類型,而不用每次創(chuàng)建一個(gè)新的對(duì)象?

          不必要地創(chuàng)建潛在的大量對(duì)象(數(shù)百萬),并對(duì)它們進(jìn)行垃圾收集處理,這才可能真正影響到性能。下面這種方法可能會(huì)比較好:使用 JDBC API ,而不是總分配新的對(duì)象來檢索像字符串這樣的數(shù)據(jù)。

          我們正在研究這個(gè)主題,確定在某些地方是否應(yīng)該改善 JDBC API。以后可能會(huì)有這方面的信息。此外,如果您有關(guān)于這個(gè)問題的任何評(píng)論,也請(qǐng)發(fā)送給我們。

          18. 在 JDBC API 中有一個(gè)方法 getColumnCount。是否有類似的方法來查找結(jié)果集中的行數(shù)?

          沒有,但查找行數(shù)是容易的。如果您正在使用可滾動(dòng)結(jié)果集 rs,就可以調(diào)用 rs.last,然后調(diào)用 rs.getRow 來查找 rs 中的行數(shù)。如果結(jié)果集是不可滾動(dòng)的,也可以通過在結(jié)果集中迭代來計(jì)算行數(shù),或者提交一個(gè)查詢,在 SELECT 子句中加上 COUNT 列來取得行數(shù)。

          19. 我想下載Java 2 SDK, Standard Edition (以前的 JDK 1.2)的 JDBC-ODBC Bridge。我是 JDBC API 的初學(xué)者,我想從 Bridge 開始。我該怎么做?

          JDBC-ODBC Bridge 與 Java 2 SDK, Standard Edition 捆綁在一起,因此沒有必要另外下載它。

          20. 如果我使用 JDBC API,我有必要使用 ODBC 支配(ODBC underneath)嗎?

          沒有必要,這只是許多可能的解決方案中的一種。我們推薦使用純支持 Java JDBC 技術(shù)的驅(qū)動(dòng)程序(類型 3 或 4),以便取得 Java 編程語言和 JDBC API 的所有優(yōu)點(diǎn)。

          21. 一旦有了 Sun 的 Java 2 SDK, Standard Edition,連接數(shù)據(jù)庫還需要做其他什么嗎?

          仍需要獲得并安裝支持 JDBC 技術(shù)的驅(qū)動(dòng)程序,并且它要支持正在使用的數(shù)據(jù)庫。有來自各種資源的許多驅(qū)動(dòng)程序。也可以試著使用 JDBC-ODBC Bridge,前提是已經(jīng)創(chuàng)建了 ODBC 數(shù)據(jù)庫連接。 Bridge 與 Java 2 SDK, Standard Edition 一起提供,它本身不需要任何額外的安裝。Bridge 是普通的 ODBC 客戶端。不過請(qǐng)注意,您應(yīng)該將 JDBC-ODBC Bridge 只用于試驗(yàn)原型,或者在沒有可供使用的其他驅(qū)動(dòng)程序時(shí)才用它。

          posted on 2005-02-04 11:30 jacky 閱讀(228) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(10)

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          收藏夾

          java

          搜索

          •  

          最新評(píng)論


          主站蜘蛛池模板: 内丘县| 凤阳县| 高陵县| 宜宾市| 颍上县| 芦山县| 涪陵区| 太康县| 衡阳县| 陆丰市| 益阳市| 方正县| 太原市| 牟定县| 怀远县| 磴口县| 岐山县| 渑池县| 禄劝| 惠水县| 临江市| 惠州市| 涞水县| 湘乡市| 武定县| 灵武市| 慈溪市| 北海市| 庄浪县| 手游| 祥云县| 会泽县| 香港 | 杭州市| 周宁县| 宣威市| 锦屏县| 通山县| 睢宁县| 原平市| 石泉县|