国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

一個(gè)簡單的JDBC包裝器(2)

2019-11-18 13:40:33
字體:
供稿:網(wǎng)友

  一個(gè)簡單的JDBC包裝器(2)

一個(gè)完整的示例
現(xiàn)在我們已經(jīng)看過了所有的類,讓我們來看一個(gè)完整的示例吧。在清單 4 中,我們將抽取出符合特定條件的一套記錄,然后打印出它們的值。


清單 4. 一個(gè)讀取數(shù)據(jù)的完整示例
// 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 );
}

如此輕易!在下一節(jié)中,我們將看看怎樣向數(shù)據(jù)庫寫入數(shù)據(jù)。

修改數(shù)據(jù)
正如前面所提到的,使用我們的 API 讀寫數(shù)據(jù)是以整個(gè)行為單位的。為了向數(shù)據(jù)庫寫入數(shù)據(jù),您必須創(chuàng)建(或修改)Row 對象,然后向數(shù)據(jù)庫寫入那個(gè) Row 對象。

向數(shù)據(jù)庫寫入數(shù)據(jù)是通過使用 Table 中的 putRow 方法。這種方法有兩種變體:

public void putRow( Row row )
public void putRow( Row row, String conditions )

這兩種變體分別對應(yīng)于 SQL 中的 INSERT 和 UPDATE 命令。

在第一個(gè)變體中,寫一行意味著將一個(gè)全新的行插入表中。

在第二個(gè)變體中,寫一行意味著修改一個(gè)現(xiàn)有的行。conditions 參數(shù)使您能夠指定您想要修改的是哪一行(哪些行)。

讓我們來看看每種方法的一個(gè)示例。

插入一個(gè)新行
插入一個(gè)新行很簡單,因?yàn)槟槐刂付ㄒ薷牡男校ㄒ恍谢蚨嘈校D皇呛唵蔚匕研胁迦耄?

table.putRow( row );

您可以重新創(chuàng)建一個(gè) Row,如清單 5 所示。

清單 5. 重新創(chuàng)建一個(gè) Row
// Create an empty row object
Row row = new Row();
// Fill it up with data
row.put( "id", "200" );
row.put( "name", "Joey Capellino" );

或者,您可以修改一個(gè)以前曾經(jīng)從數(shù)據(jù)庫中讀取的一個(gè)現(xiàn)有的行,如清單 6 所示。

清單 6. 修改現(xiàn)有的 Row
// Grab a row from the database
Row row = table.getRow( someConditions );
// Change some or all of the fields
row.put( "name", "Joey Capellino" );

雖然通常是在插入時(shí)重新創(chuàng)建 Row,更新時(shí)使用現(xiàn)有的 Row,實(shí)際上您可以用任何方式來進(jìn)行。

更新現(xiàn)有的行
正如前面的部分提到的,對于您如何創(chuàng)建用來更新的 Row 是沒有限制的。 但是,通常您是使用一個(gè)剛從數(shù)據(jù)庫中讀出的 Row。

為了具體描述這一點(diǎn),我們將使用一個(gè)示例(在該例子中我們讀出一個(gè)員工的姓名),改變這個(gè)名字,然后將更改后的結(jié)果寫回?cái)?shù)據(jù)庫,如清單 7 所示。

清單 7. 通過修改 Row 進(jìn)行更新
Row row = table.getRow( "id=104" );
row.put( "name", newName );
table.putRow( row, "id=104" );

注重我們必須在調(diào)用 putRow() 中指定條件。這樣才會(huì)使調(diào)用成為更新,而不是插入。

注重,這個(gè)調(diào)用將更新所有符合條件的行,而不是其中的一行。

結(jié)論
在本文中,我們初步熟悉了一種通過 JDBC 包提供一種簡化的通往關(guān)系型數(shù)據(jù)庫接口的 API。這種抽象保留了 JDBC 接口的很多基本關(guān)系型功能,但對其進(jìn)行了簡化,從而讓使用非常地方便。這種簡化是以效率為代價(jià)的,但當(dāng)目標(biāo)是簡單性時(shí),這并不是一個(gè)令人驚異的結(jié)果。

參考資料

參加本文的討論論壇。

下載本文中討論的類的全部資料:
Database.java
Table.java
RowSet.java
Row.java

JDBC 學(xué)習(xí)中心包含許多教程的鏈接。

閱讀 JDBC 文檔頁可以獲得很多有用的文檔的鏈接。

您可以在 Amazon 購買 《JDBC API 教程和參考大全》,第 2 版,或者只是閱讀它。

免費(fèi)數(shù)據(jù)庫清單包含許多免費(fèi) RDBMS 軟件包的鏈接,您可以在啟用 JDBC 的程序的服務(wù)器端使用。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 交口县| 平顺县| 齐齐哈尔市| 疏附县| 海口市| 屯门区| 禄丰县| 峨边| 新龙县| 龙川县| 富蕴县| 左权县| 民权县| 灵山县| 高阳县| 遂川县| 苍山县| 郁南县| 梧州市| 荣成市| 泾源县| 衡山县| 玉龙| 江西省| 普兰县| 兖州市| 北京市| 吴江市| 莱西市| 恩施市| 新津县| 军事| 富顺县| 屏东县| 南投市| 紫金县| 察哈| 绍兴县| 高陵县| 衡水市| 南溪县|