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

獲得JDBC學習示例

編輯:關於JAVA

就JDBC來說,代碼本身是很容易理解的。最令人迷惑的部分是如何使它在自己特定的系統上運行起來。之所以會感到迷惑,是由於它要求我們掌握如何才能使JDBC驅動程序正確裝載,以及如何用我們的數據庫管理軟件來設置一個數據庫。
當然,具體的操作過程在不同的機器上也會有所區別。但這兒提供的在32位Windows環境下操作過程可有效幫助大家理解在其他平台上的操作。

1. 步驟1:尋找JDBC驅動程序
上述程序包含了下面這條語句:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
這似乎暗示著一個目錄結構,但大家不要被它蒙騙了。在我手上這個JDK 1.1安裝版本中,根本不存在叫作JdbcOdbcDriver.class的一個文件。所以假如在看了這個例子後去尋找它,那麼必然會徒勞而返。另一些人提供的例子使用的是一個假名字,如“myDriver.ClassName”,但人們從字面上得不到任何幫助。事實上,上述用於裝載jdbc-odbc驅動程序(實際是與JDK 1.1配套提供的唯一驅動)的語句在聯機文檔的多處地方均有出現(特別是在一個標記為“JDBC-ODBC Bridge Driver”的頁內)。若上面的裝載語句不能工作,那麼它的名字可能已隨著Java新版本的發布而改變了;此時應到聯機文檔裡尋找新的表述方式。
若裝載語句出錯,會在這個時候得到一個違例。為了檢驗驅動程序裝載語句是不是能正常工作,請將該語句後面直到catch從句之間的代碼暫時設為注釋。如果程序運行時未出現違例,表明驅動程序的裝載是正確的。

2. 步驟2:配置數據庫
同樣地,我們只限於在32位Windows環境中工作;您可能需要研究一下自己的操作系統,找出適合自己平台的配置方法。
首先打開控制面板。其中可能有兩個圖標都含有“ODBC”字樣,必須選擇那個“32位ODBC”,因為另一個是為了保持與16位軟件的向後兼容而設置的,和JDBC混用沒有任何結果。雙擊“32位ODBC”圖標後,看到的應該是一個卡片式對話框,上面一排有多個卡片標簽,其中包括“用戶DSN”、“系統DSN”、“文件DSN”等等。其中,“DSN”代表“數據源名稱”(Data Source Name)。它們都與JDBC-ODBC橋有關,但設置數據庫時唯一重要的地方“系統DSN”。盡管如此,由於需要測試自己的配置以及創建查詢,所以也需要在“文件DSN”中設置自己的數據庫。這樣便可讓Microsoft Query工具(與Microsoft Office配套提供)正確地找到數據庫。注意一些軟件公司也設計了自己的查詢工具。
最有趣的數據庫是我們已經使用過的一個。標准ODBC支持多種文件格式,其中包括由不同公司專用的一些格式,如dBASE。然而,它也包括了簡單的“逗號分隔ASCII”格式,它幾乎是每種數據工具都能夠生成的。就目前的例子來說,我只選擇自己的“people”數據庫。這是我多年來一直在維護的一個數據庫,中間使用了各種聯絡管理工具。我把它導出成為一個逗號分隔的ASCII文件(一般有個.csv擴展名,用Outlook Express導出通信簿時亦可選用同樣的文件格式)。在“文件DSN”區域,我按下“添加”按鈕,選擇用於控制逗號分隔ASCII文件的文本驅動程序(Microsoft Text Driver),然後撤消對“使用當前目錄”的選擇,以便導出數據文件時可以自行指定目錄。
大家會注意到在進行這些工作的時候,並沒有實際指定一個文件,只是一個目錄。那是因為數據庫通常是由某個目錄下的一系列文件構成的(盡管也可能采用其他形式)。每個文件一般都包含了單個“數據表”,而且SQL語句可以產生從數據庫中多個表摘取出來的結果(這叫作“聯合”,或者join)只包含了單張表的數據庫(就象目前這個)通常叫作“平面文件數據庫”。對於大多數問題,如果已經超過了簡單的數據存儲與獲取力所能及的范圍,那麼必須使用多個數據表。通過“聯合”,從而獲得希望的結果。我們把這些叫作“關系型”數據庫。

3. 步驟3:測試配置
為了對配置進行測試,需用一種方式核實數據庫是否可由查詢它的一個程序“見到”。當然,可以簡單地運行上述的JDBC示范程序,並加入下述語句:
Connection c = DriverManager.getConnection(
dbUrl, user, password);
若擲出一個違例,表明你的配置有誤。
然而,此時很有必要使用一個自動化的查詢生成工具。我使用的是與Microsoft Office配套提供的Microsoft Query,但你完全可以自行選擇一個。查詢工具必須知道數據庫在什麼地方,而Microsoft Query要求我進入ODBC Administrator的“文件DSN”卡片,並在那裡新添一個條目。同樣指定文本驅動程序以及保存數據庫的目錄。雖然可將這個條目命名為自己喜歡的任何東西,但最好還是使用與“系統DSN”中相同的名字。
做完這些工作後,再用查詢工具創建一個新查詢時,便會發現自己的數據庫可以使用了。

4. 步驟4:建立自己的SQL查詢
我用Microsoft Query創建的查詢不僅指出目標數據庫存在且次序良好,也會自動生成SQL代碼,以便將其插入我自己的Java程序。我希望這個查詢能夠檢查記錄中是否存在與啟動Java程序時在命令行鍵入的相同的“姓”(Last Name)。所以作為一個起點,我搜索自己的姓“Eckel”。另外,我希望只顯示出有對應E-mail地址的那些名字。創建這個查詢的步驟如下:
(1) 啟動一個新查詢,並使用查詢向導(Query Wizard)。選擇“people”數據庫(等價於用適應的數據庫URL打開數據庫連接)。
(2) 選擇數據庫中的“people”表。從這張數據表中,選擇FIRST,LAST和EMAIL列。
(3) 在“Filter Data”(過濾器數據庫)下,選擇LAST,並選擇“equals”(等於),加上參數Eckel。點選“And”單選鈕。
(4) 選擇EMAIL,並選中“Is not Null”(不為空)。
(5) 在“Sort By”下,選擇FIRST。
查詢結果會向我們展示出是否能得到自己希望的東西。
現在可以按下SQL按鈕。不需要我們任何方面的介入,正確的SQL代碼會立即彈現出來,以便我們粘貼和復制。對於這個查詢,相應的SQL代碼如下:

 

SELECT people.FIRST, people.LAST, people.EMAIL
FROM people.csv people
WHERE (people.LAST='Eckel') AND 
(people.EMAIL Is Not Null)
ORDER BY people.FIRST


若查詢比較復雜,手工編碼極易出錯。但利用一個查詢工具,就可以交互式地測試自己的查詢,並自動獲得正確的代碼。事實上,親手為這些事情編碼是難以讓人接受的。

5. 步驟5:在自己的查詢中修改和粘貼
我們注意到上述代碼與程序中使用的代碼是有所區別的。那是由於查詢工具對所有名字都進行了限定,即便涉及的僅有一個數據表(若真的涉及多個數據表,這種限定可避免來自不同表的同名數據列發生沖突)。由於這個查詢只需要用到一個數據表,所以可考慮從大多數名字中刪除“people”限定符,就象下面這樣:

 

SELECT FIRST, LAST, EMAIL
FROM people.csv people
WHERE (LAST='Eckel') AND 
(EMAIL Is Not Null)
ORDER BY FIRST

此外,我們不希望“硬編碼”這個程序,從而只能查找一個特定的名字。相反,它應該能查找我們在命令行動態提供的一個名字。所以還要進行必要的修改,並將SQL語句轉換成一個動態生成的字串。如下所示:

 

"SELECT FIRST, LAST, EMAIL " +
"FROM people.csv people " +
"WHERE " +
"(LAST='" + args[0] + "') " +
" AND (EMAIL Is Not Null) " +
"ORDER BY FIRST");

SQL還有一種方式可將名字插入一個查詢,名為“程序”(Procedures),它的速度非常快。但對於我們的大多數實驗性數據庫操作,以及一些初級應用,用Java構建查詢字串已經很不錯了。
從這個例子可以看出,利用目前找得到的工具——特別是查詢構建工具——涉及SQL及JDBC的數據庫編程是非常簡單和直觀的。

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