日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JDBC更新計(jì)數(shù)行及調(diào)用存儲(chǔ)過程返回多個(gè)結(jié)果集詳解

JDBC更新計(jì)數(shù)行調(diào)用存儲(chǔ)過程返回多個(gè)結(jié)果集是本文我們主要要介紹的內(nèi)容,在開始本文的時(shí)候,我們先了解SQL Server中的一個(gè)命令:SET NOCOUNT ON;執(zhí)行該命令,表示不返回計(jì)數(shù)行,什么是計(jì)數(shù)行了,比如我們執(zhí)行DELETE ,UPDATE,INSERT的時(shí)候,對(duì)多少條數(shù)據(jù)進(jìn)行了修改,計(jì)數(shù)行的值就是多少?

創(chuàng)新互聯(lián)建站主營順義網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,順義h5微信小程序開發(fā)搭建,順義網(wǎng)站營銷推廣歡迎順義等地區(qū)企業(yè)咨詢

 
 
 
  1. SET NOCOUNT ON added to prevent extra result sets from  
  2. interfering with SELECT statements. 

在JDBC的操作數(shù)據(jù)庫的過程中,你可以把Statement理解成為指向ResultSet的指針,如果數(shù)據(jù)庫允許返回記數(shù)行的話,Statement將指向該計(jì)數(shù)行,比如

 
 
 
  1. SET NOCOUNT ON;    
  2. update TABLEA SET A='aa';--假設(shè)共100條數(shù)據(jù)被修改     
  3. SELECT * FROM TABLEA;  

調(diào)用callableStatement.execute();后callableStatement指向受影響的計(jì)數(shù)行,當(dāng)你再調(diào)用rs = callableStatement.getResultSet();  的時(shí)候,結(jié)果集rs 為空。 無法查詢出表TABLEA 的數(shù)據(jù)Statement提供了一個(gè)getMoreResults()的方法,該方法能將當(dāng)前Statement "指針" 移動(dòng)到下一個(gè)結(jié)果集。如果callableStatement.getUpdateCount()==-1&&getMoreResults()==true的話表明當(dāng)前statement對(duì)象正指向一個(gè)真正的結(jié)果集。

For Examle:

 
 
 
  1. package xx.qq.app;      
  2. import java.sql.CallableStatement;    
  3. import java.sql.Connection;    
  4. import java.sql.ResultSet;    
  5. import org.springframework.beans.factory.BeanFactory;    
  6. import org.springframework.context.ApplicationContext;    
  7. import org.springframework.context.support.ClassPathXmlApplicationContext;    
  8. import com.mchange.v2.c3p0.ComboPooledDataSource;    
  9. /**   
  10. * @author Jack Zhang Email:fish2-2@163.com   
  11. * @date 2011-08-22   
  12. */    
  13. public class AppTest {    
  14. public static void main(String[] args) throws Exception {    
  15. ApplicationContext context = new ClassPathXmlApplicationContext(    
  16. new String[] { "applicationContext.xml" });    
  17. BeanFactory factory = (BeanFactory) context;    
  18. ComboPooledDataSource dataSource = (ComboPooledDataSource) factory    
  19. .getBean("dataSource");    
  20. Connection con = dataSource.getConnection();    
  21. CallableStatement callableStatement = con    
  22. .prepareCall("{call GetBasics(?,?)}");    
  23. callableStatement.setString(1, "w");    
  24. callableStatement.registerOutParameter(2, java.sql.Types.INTEGER);    
  25. ResultSet rs=null;    
  26. // 是否有結(jié)果集返回     
  27. boolean hasResultSet = callableStatement.execute();    
  28. // callableStatement--------->update     
  29. System.out.println("執(zhí)行存儲(chǔ)過程后Statement是否指向真正的結(jié)果集:"+hasResultSet);    
  30. System.out.println("受影響的行數(shù):"+callableStatement.getUpdateCount());    
  31. callableStatement.getMoreResults();//------->select     
  32. rs = callableStatement.getResultSet();    
  33. System.out.println("受影響的行:"+callableStatement.getUpdateCount());    
  34. while (rs.next()) {    
  35. //System.out.println(rs.getObject(1));     
  36. }    
  37. callableStatement.getMoreResults();//-------->update     
  38. System.out.println("受影響的行:"+callableStatement.getUpdateCount());    
  39. callableStatement.getMoreResults();//-------->update     
  40. System.out.println("受影響的行:"+callableStatement.getUpdateCount());    
  41. callableStatement.getMoreResults();//-------->select     
  42. System.out.println("受影響的行:"+callableStatement.getUpdateCount());    
  43. rs = callableStatement.getResultSet();// 獲取到真實(shí)的結(jié)果集     
  44. while (rs.next()) {    
  45. //System.out.println(rs.getObject(1));     
  46. }    
  47. callableStatement.getMoreResults();//--------->update     
  48. System.out.println("受影響的行:"+callableStatement.getUpdateCount());    
  49. if (rs != null)    
  50. rs.close();    
  51. if (callableStatement != null)    
  52. callableStatement.close();    
  53. if (con != null)    
  54. con.close();    
  55. }    
  56. }  

輸出:

執(zhí)行存儲(chǔ)過程后是否返回結(jié)果集:false

  1. 受影響的行數(shù):262  
  2. 受影響的行:-1 ,此處返回結(jié)果集  
  3. 受影響的行:262  
  4. 受影響的行:262  
  5. 受影響的行:-1,此處返回結(jié)果集  
  6. 受影響的行:262  

存儲(chǔ)過程

 
 
 
  1. ALTER PROCEDURE GetBasics(    
  2. @PERSON_NAME VARCHAR(32),    
  3. @COUNT INT OUT    
  4. )    
  5. AS    
  6. BEGIN    
  7. SET NOCOUNT ON;    
  8. update TABLE_A SET NAME='aa';    
  9. SELECT @COUNTCOUNT = COUNT(*) FROM TABLE_A;    
  10. update TABLE_A SET NAME='aa';    
  11. SELECT * FROM TABLE_A;    
  12. update TABLE_A SET NAME='aa';    
  13. update TABLE_A SET NAME='aa';    
  14. SELECT * FROM ORGS;    
  15. update TABLE_A SET NAME='aa';    
  16. END    
  17. GO   

以上就是JDBC更新計(jì)數(shù)行及調(diào)用存儲(chǔ)過程返回多個(gè)結(jié)果集的過程的詳細(xì)解釋及實(shí)例說明,本文就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. Oracle 11g數(shù)據(jù)庫審計(jì)功能應(yīng)用實(shí)例解析
  2. SQL Server數(shù)據(jù)庫復(fù)制失敗的原因及解決方案
  3. SQL Server 2005數(shù)據(jù)庫游標(biāo)調(diào)用函數(shù)實(shí)例解析
  4. SQL Server數(shù)據(jù)庫中FOR XML AUTO的使用詳解
  5. SQL Server數(shù)據(jù)庫用視圖來處理復(fù)雜的數(shù)據(jù)查詢關(guān)系

本文名稱:JDBC更新計(jì)數(shù)行及調(diào)用存儲(chǔ)過程返回多個(gè)結(jié)果集詳解
分享路徑:http://www.dlmjj.cn/article/djoppcd.html