C語言中文網 目錄
JSP教程
1 JSP是什么
2 JSP的特點與工作流程
3 JSP與ASP、PHP的比較
4 JSP頁面的組成及其元素
5 JSP開發環境搭建
6 第一個JSP程序
7 JSP注釋
8 JSP聲明
9 JSP中嵌入Java代碼
10 JSP表達式
11 JSP開發模式
12 JSP常見錯誤
13 JSP指令
14 JSP page指令
15 JSP include指令
16 JSP指令應用實例
17 JSP動作
18 JSP include動作
19 JSP param動作
20 JSP forward動作
21 JSP plugin動作
22 JSP useBean動作
23 JSP setProperty動作
24 JSP getProperty動作
25 JSP application 對象
26 JSP out對象
27 JSP request對象
28 JSP response對象
29 JSP session對象
30 JSP pageContext對象
31 JSP page對象
32 JSP config對象
33 JSP獲取并顯示字符串長度
34 什么是JavaBean
35 JavaBean工具
36 JavaBean規范
37 JavaBean屬性
38 JavaBean Scope屬性
39 JavaBean事件
40 JavaBean實現用戶登錄界面
41 Servlet是什么
42 Servlet生命周期
43 Servlet的類和方法
44 Servlet客戶端跳轉
45 EL是什么
46 EL表達式的基本語法及運算符的優先級
47 JSP EL 點(.)運算符和下標([])運算符
48 JSP EL算數運算符
49 JSP EL關系運算符
50 JSP EL邏輯運算符
51 JSP EL條件運算符
52 JSP EL empty空運算符
53 EL表達式中的常量與變量
54 EL表達式的保留字
55 EL表達式的內置對象及其作用域
56 使用EL表達式訪問JavaBean
57 使用EL表達式訪問集合
58 EL表達式內置對象param和paramValues
59 EL表達式內置對象cookie
60 EL表達式內置對象initParam
61 JDBC 的定義及產品組件
62 建立JDBC連接
63 利用JDBC發送SQL語句
64 JDBC API ResultSet接口
65 JDBC RowSet接口
66 JDBC BaseRowSet類和CachedRowSet類
67 填充CachedRowSet對象記錄集
68 File類
69 使用字節流讀/寫文件
70 RandomAccessFile 類
71 JSP文件上傳
72 XML是什么
73 XML的基本語法
74 JDK 中的 XML API
75 DOM解析XML
76 SAX解析XML
77 DOM4j解析XML
首頁 > JSP教程 閱讀:121

JDBC RowSet接口

RowSet 接口是 RowSet 包中最重要的接口。RowSet 接口為 JDBC API 添加了對 JavaBeans(TM) 組件模型的支持,在一個可視化的 JavaBean 開發環境中,使用 RowSet 對象可以像使用 JavaBean 組件那樣方便。

RowSet 對象可以在設計時被創建和指定屬性,在程序的運行時被執行,RowSet 接口定義了一套 JavaBean 組件的屬性方法,RowSet 實例對象可以使用 setXXX() 方法指定屬性以便和數據庫建立連接。

RowSet 接口支持 JavaBeans 的事件模型。允許同一個應用程序的其他組件在運行時刻,并且 RowSet 接口的實例對象發生了某種變化/事件的情況下(例如記錄集的數據庫游標向前移動了一位),調用 RowSet 接口的 setXXX() 方法,修改 RowSet 對象的屬性。

RowSet 接口繼承自 java.sql.ResultSet 接口,它不但具有 ResultSet 接口強大的記錄集功能,而且比 ResultSet 接口更容易使用。下面我們就來介紹如何使用 RowSet 接口。

1. 創建RowSet接口的實例對象

在 JDBCAPI 中,ResultSet 接口的實例對象一般不是調用構造函數直接創建,而是由其他方法的返回結果初始化。例如,Statement 接口的 executeQuery() 方法的返回結果就是 ResultSet 接口的實例對象。RowSet 接口的創建方法如下:

RowSet rs=new RowSet();

2. 設定RowSet對象的數據庫連接屬性

創建了 RowSet 接口的實例對象以后,必須設定 RowSet 對象的數據庫連接屬性,以便 RowSet 對象可以和數據庫服務器建立連接,進而向數據庫發送 SQL 語句訪問數據庫中的數據,并獲取結果記錄集。

RowSet 接口定義了下表所示的一些方法(僅列出比較重要的方法),用以指定數據庫連接屬性,如用戶名、訪問密碼、數據源 URL 等屬性。

表1 RowSet接口定義的重要方法
方法 作用
public void setConcurrency(int concurrency) 該方法可以指定 RowSet 對象和數據庫建立的連接的協同級別,通俗地講,
就是指 RowSet 對象所包含的結果記錄集的數據是否可以更新,方法參數
concurrency 是一個整型常數。這些常數在 ResultSet 接口中被定義,
RowSet 接口繼承自ResultSet 接口,自然可以使用這些預定義的常數。
public void setDataSourceName
(java.lang.String name)*
RowSet 接口的實例對象可以使用這個方法查詢(lookup)特定的(由參數
name 指定)、存在于 JNDI 命名服務(JNDI naming service)中的
JDBCDataSource 對象。
public void setMaxRows(int max) 該方法可以指定 RowSet 對象中所包含的記錄集的最大記錄數。
public void setPassword(java.lang.String password) 該方法可以指定 RowSet 對象和數據庫建立連接所需的用戶密碼。
public void setReadOnly(Boolean value) 該方法指定 RowSet 對象中所包含的記錄集是否只讀,方法參數為布爾值,
如果為 true,那么結果集只讀;反之亦然。
public void setTransactionIsolation(int level) 該方法指定事務處理的隔離級別。
public void setType(int type) RowSet 對象可以使用此方法指定記錄集游標的類型。例如,可以前后移動
的數據庫游標,或者是僅僅可以往前移動的游標。方法參數 type 是一個整
型常數,這些常數在 ResultSet 接口中定義。
public void setTypeMap(java.util.Map map) RowSet 對象可以使用此方法指定當前 RowSet 對象與數據庫連接時所使用
的映射地圖。
public void setURL(java.lang.String URL) 該方法用于指定 RowSet 對象需要與之建立連接的數據源的 JDBC URL 地
址。例如 JDBCodbc test
public void setUsemame(java.lang.String name) 該方法用于指定 RowSet 對象訪問數據庫服務器時所需的用戶名。

3. 使用RowSet對象與數據庫建立連接

使用 RowSet 對象和數據庫建立連接,JSP 代碼如下:
<%
Class.forName(sun.jdbc.odbc.JDBCodbcDriver);    //載人 JDBC 驅動程序
rset.setURL(JDBCodbc test);
rset.setUser(sa);
rset.setPassword();    //指定 JDBC 數據源 URL
rest.setType(ResultSet.TYPE_SCROLL_SENSITIVE);
%>

在上面的代碼段中,首先需要載入 JDBC 驅動程序,然后分別使用 setURL()、setUser(),setPassword() 等方法指定 JDBC 數據源 URL、數據庫用戶名、數據庫訪問密碼等訪問參數,代碼段的最后使用 setType() 方法指定 RowSet 實例對象,所包含的結果記錄集的類型是:數據庫游標可以前后移動,并且結果記錄集的數據對其他用戶的數據庫更新操作敏感。

其實上面的 JSP 代碼段并沒有真正與數據庫系統建立連接,它僅僅指定了重要的數據庫連接參數,使得 RowSet 處于就緒狀態,隨時都可以和數據庫建立連接。若需要與數據庫建立連接,除了指定數據庫連接參數以外,第二步就必須向數據庫發送 SQL 命令,設置 SQL 命令的 IN 參數,最后調用 execute() 方法,該方法的內部流程是:建立真正的數據庫連接,調用數據庫引擎,完成 SQL 命令,并且用數據庫系統返回的結果數據填充 RowSet 對象的記錄集。

這時,RowSet 對象和 ResultSet 對象差不多,也可以遍歷記錄集中的每一個記錄,或者定位到某一個記錄使用 getXXX()、updateXXX() 等方法對記錄集中的數據進行操作。

4. 使用RowSet對象向數據庫服務器發送命令

設定 RowSet 對象與數據庫連接的屬性以后,就可以利用 RowSet 對象向數據庫發送命令和命令參數。

使用 RowSet 接口的 setCommand() 方法可以向數據庫系統發送預編譯的 SQL 命令,使用其他的 setXXX() 方法可以設定 SQL 命令的 IN 參數,類似于 PreparedStatement 接口和 CallableStatement 接口發送預編譯 SQL 命令的方式。RowSet 接口中定義的相關方法如下。
  1. public void setCommand(java.lang.String cmd):使用該方法可以向數據庫發送預編譯的 SQL 語句,SQL 語句中可以含有輸入參數,參數的位置用?號代替。第一個輸入參數的索引為 1,第二個參數的索引為 2,以此類推。
  2. public void setARRAY(int i java.sql.ARJRAY x):該方法可以設定 SQL 語句中 SQL 數 據類型是 SQL ARRAY 的參數,方法參數 i 指定輸入參數的索引,方法參數 x 代表替換目標參數的 java.sql.ARRAY 對象。
  3. public void setBlob(int i java.sql.Blob x):該方法和 setARRAY() 差不多,主要用于設定 SQL 語句中數據類型為 SQL BLOB 類型的輸入參數。
  4. public void setString(int parameterlndexjava.lang.String x):該方法主要用于設定 SQL 語句中數據類型為 VARCHAR、NVARCHAR 等類型的輸入參數,parameterIndex 代表需要替換的輸入參數的索引,x 代表需要引入的 java String 對象。

【例1】下面的 JSP 代碼演示如何使用 RowSet 對象的 setCommand() 方法向數據庫發送 SQL 命令,并且使用 setXXX() 方法指定 SQL 命令的輸入參數(rset 是 RowSet 接口的實例對象)。
<%
rset.setCommand(SELECT * FROM tbuser where name=? and pass=?);
rset.setString(1 fancy);
rset.setString(2 fancy);
%>

其實,setCommand() 方法和前面講述的 setPassword()、setURL() 等方法都沒有和數據庫系統建立事實上的數據庫連接,它們都用于設定 RowSet 對象的屬性。SQL 命令也可以看作 RowSet 對象的屬性之一。

5. 使用RowSet對象執行數據庫操作

如果己經按照上面介紹的步驟設置好 RowSet 對象的連接屬性,在 SQL 命令中屬性輸入參數,那么現在就可以使用 RowSet 接口的 execute() 方法執行數據庫操作,execute() 方法首先應用數據庫連接屬性與數據庫建立連接,然后向數據庫系統發送 SQL 命令,接受數據庫返回的數據,使用這些數據實例化 RowSet 對象內部的結果記錄集。

execute() 方法并不返回任何 ResultSet 接口的實例對象,它僅用數據庫返回的數據填充 RowSet 對象,因為 RowSet 接口繼承自 ResultSet 接口,因此具有 ResultSet 接口的全部功能,在執行了 execute() 方法以后,可以將 RowSet 對象當作一個 ResultSet 對象來使用。

【例2】下面的 JSP 代碼演示了如何使用 RowSet 對象執行數據庫操作。
<%
rset.execute();
while(rset.next())
{
out.println(username +rset.getString(name)+<br>);
out.println(password +rset.getString(pass)+<br>);
}
rset.close();
%>

6. 給RowSet對象添加事件監聽者

RowSet 對象可以和某個 RowSet 事件監聽者(RowSetListener)綁定在一起,RowSet 事件監聽者可以對 RowSet 對象中發生的事件作出響應,例如數據庫游標的移動事件。

addRowSetListener() 方法可以使一個 RowSet 事件監聽者和 RowSet 對象綁定在一起。removeRowSetListener() 方法則可以解除這種綁定關系,RowSet 事件監聽者一旦和 RowSet 對象解除了綁定關系,那么它對 RowSet 對象內部所發生的事件就不能做出響應了。

這兩個方法的定義如下:

public void addRowSetListener(RowSetListener listener);
public void removeRowSetListener(RowSetListener listener);

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo