使用返回多個結果集的內聯 SQL 或 SQL Server 存儲過程時,Microsoft SQL Server 2005 JDBC Driver 提供
SQLServerStatement
類的
getResultSet
方法,以檢索返回的每個數據集。此外,當運行返回多個結果集的語句時,可以使用
SQLServerStatement
類的
execute
方法,因為它將返回一個
boolean
值,該值指示返回的值是結果集還是更新計數。
如果
execute
方法返回
true
,則運行的語句已返回了一個或多個結果集。通過調用
getResultSet
方法可以訪問第一個結果集。若要確定是否提供了多個結果集,可以調用
getMoreResults
方法,如果提供了多個結果集,則該方法返回
boolean
值
true
。如果有多個結果集可用,則可以再次調用
getResultSet
方法進行訪問,繼續使用這個過程直到所有的結果集都得到處理。如果
getMoreResults
方法返回
false
,則沒有多個結果集要處理。
如果
execute
方法返回
false
,則所運行的語句返回了更新計數值,可以通過調用
getUpdateCount
方法檢索此值。
![]() |
有關更新計數的詳細信息,請參閱
使用帶有更新計數的存儲過程
。
|
在下面的實例中,將向此函數傳遞 SQL Server AdventureWorks 示例數據庫的打開連接,并構造一條 SQL 語句,該語句在運行后將返回兩個結果集:
public static void executeStatement(Connection con) { try { String SQL = "SELECT TOP 10 * FROM Person.Contact; _" + "SELECT TOP 20 * FROM Person.Contact"; Statement stmt = con.createStatement(); boolean results = stmt.execute(SQL); int rsCount = 0; //Loop through the available result sets. do { if(results) { ResultSet rs = stmt.getResultSet(); rsCount++; //Show data from the result set. System.out.println("RESULT SET #" + rsCount); while (rs.next()) { System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName")); } rs.close(); } System.out.println(); results = stmt.getMoreResults(); } while(results); stmt.close(); } catch (Exception e) { e.printStackTrace(); } }
在這種情況下,返回的結果集的數目為 2。但是,如此編寫代碼是為了在返回了未知數目的結果集時,例如在調用存儲過程時,這些結果集也會全部得到處理。若要查看調用返回多個結果集和更新計數的存儲過程的實例,請參閱
處理復雜語句
。
![]() |
調用
SQLServerStatement
類的
getMoreResults
方法時,會隱式關閉以前返回的結果集。
|
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
