一個簡單的JDBC包裝器(2)
發表于:2007-07-14來源:作者:點擊數:
標簽:
一個簡單的JDBC包裝器(2) 一個完整的示例 現在我們已經看過了所有的類,讓我們來看一個完整的示例吧。在清單 4 中,我們將抽取出符合特定條件的一套記錄,然后打印出它們的值。 清單 4. 一個讀取數據的完整示例 // First, get all rows meeting the criter
一個簡單的JDBC包裝器(2)
一個完整的示例
現在我們已經看過了所有的類,讓我們來看一個完整的示例吧。在清單 4 中,我們將抽取出符合特定條件的一套記錄,然后打印出它們的值。
清單 4. 一個讀取數據的完整示例
// First, get all rows meeting the criterion
RowSet rs = table.getRows( "id<103" );
// Iterate through the set
for (int i=0; i<rs.length(); ++i) {
// Grab each row in turn
Row row = rs.get( i );
// Get and print the value of the "name" field
String name = row.get( "name" );
System.out.println( "Name: "+name );
}
如此容易!在下一節中,我們將看看怎樣向數據庫寫入數據。
修改數據
正如前面所提到的,使用我們的 API 讀寫數據是以整個行為單位的。為了向數據庫寫入數據,您必須創建(或修改)Row 對象,然后向數據庫寫入那個 Row 對象。
向數據庫寫入數據是通過使用 Table 中的 putRow 方法。這種方法有兩種變體:
public void putRow( Row row )
public void putRow( Row row, String conditions )
這兩種變體分別對應于 SQL 中的 INSERT 和 UPDATE 命令。
在第一個變體中,寫一行意味著將一個全新的行插入表中。
在第二個變體中,寫一行意味著修改一個現有的行。conditions 參數使您能夠指定您想要修改的是哪一行(哪些行)。
讓我們來看看每種方法的一個示例。
插入一個新行
插入一個新行很簡單,因為您不必指定要修改的行(一行或多行)。您只是簡單地把行插入:
table.putRow( row );
您可以重新創建一個 Row,如清單 5 所示。
清單 5. 重新創建一個 Row
// Create an empty row object
Row row = new Row();
// Fill it up with data
row.put( "id", "200" );
row.put( "name", "Joey Capellino" );
或者,您可以修改一個以前曾經從數據庫中讀取的一個現有的行,如清單 6 所示。
清單 6. 修改現有的 Row
// Grab a row from the database
Row row = table.getRow( someConditions );
// Change some or all of the fields
row.put( "name", "Joey Capellino" );
雖然通常是在插入時重新創建 Row,更新時使用現有的 Row,實際上您可以用任何方式來進行。
更新現有的行
正如前面的部分提到的,對于您如何創建用來更新的 Row 是沒有限制的。 但是,通常您是使用一個剛從數據庫中讀出的 Row。
為了詳細描述這一點,我們將使用一個示例(在該例子中我們讀出一個員工的姓名),改變這個名字,然后將更改后的結果寫回數據庫,如清單 7 所示。
清單 7. 通過修改 Row 進行更新
Row row = table.getRow( "id=104" );
row.put( "name", newName );
table.putRow( row, "id=104" );
注意我們必須在調用 putRow() 中指定條件。這樣才會使調用成為更新,而不是插入。
注意,這個調用將更新所有符合條件的行,而不是其中的一行。
結論
在本文中,我們初步認識了一種通過 JDBC 包提供一種簡化的通往關系型數據庫接口的 API。這種抽象保留了 JDBC 接口的很多基本關系型功能,但對其進行了簡化,從而讓使用非常地方便。這種簡化是以效率為代價的,但當目標是簡單性時,這并不是一個令人驚奇的結果。
參考資料
參加本文的討論
論壇。
下載本文中討論的類的全部資料:
Database.
java Table.java
RowSet.java
Row.java
JDBC 學習中心包含許多教程的鏈接。
閱讀 JDBC 文檔頁可以獲得很多有用的文檔的鏈接。
您可以在 Amazon 購買 《JDBC API 教程和參考大全》,第 2 版,或者只是閱讀它。
免費數據庫清單包含許多免費 RDBMS 軟件包的鏈接,您可以在啟用 JDBC 的程序的
服務器端使用。
本文中的代碼已經在 PostgreSQL 數據庫引擎上通過了
測試。
在 “JDBC 3.0 中有什么新內容”(developerWorks,2001 年 7 月)中,Josh Heidebrecht 向我們介紹了 JDBC 最新的修正情況。
在“將 RDBMS 存儲過程作為 session EJB 組件的方法來封裝”(developerWorks,2000 年 10 月)中學習如何通過 Enterprise JavaBeans 來調用舊的存儲過程。
閱讀“對象-數據分離和 EJB”(developerWorks,2001 年 4 月),就能知道
面向對象和面向數據的開發人員的分離是怎樣產生的了。然后閱讀接下來的文章“在您的 EBJ 項目上克服對象-數據分離”(developerWorks,2001 年 4 月),看看您能對它做什么。
開發人員在選擇數據庫時應該注重什么功能?這個問題可以參閱“選擇數據庫管理系統”(developerWorks,2001 年 7 月)。
在 developerWorks Java 技術專區尋找更多 Java 參考資料。
關于作者
Greg Travis 是居住在紐約的一個自由
程序員。他對計算機的興趣可能是源于“ Bionic Woman”中的一段情節 - Jamie 四處奔跑,試圖逃離一所燈光和門都被邪惡的人工智能所控制的房子,人工智能還通過揚聲器嘲笑她。他是一個傳統觀念的虔誠信徒 - 如果一個計算機程序能夠工作,那完全是個巧合??梢酝ㄟ^ mito@panix.com 與他聯系。
(全文完)
原文轉自:http://www.anti-gravitydesign.com