成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JDBC更新計數行及調用存儲過程返回多個結果集詳解

數據庫 SQL Server
本文我們主要對JDBC更新計數行及調用存儲過程返回多個結果集的過程進行了詳細的解釋,并通過一些實例對其加以說明,希望能夠對您有所幫助。

JDBC更新計數行調用存儲過程返回多個結果集是本文我們主要要介紹的內容,在開始本文的時候,我們先了解SQL Server中的一個命令:SET NOCOUNT ON;執行該命令,表示不返回計數行,什么是計數行了,比如我們執行DELETE ,UPDATE,INSERT的時候,對多少條數據進行了修改,計數行的值就是多少?

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

 

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

 

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

 

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

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. // 是否有結果集返回     
  27. boolean hasResultSet = callableStatement.execute();    
  28. // callableStatement--------->update     
  29. System.out.println("執行存儲過程后Statement是否指向真正的結果集:"+hasResultSet);    
  30. System.out.println("受影響的行數:"+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();// 獲取到真實的結果集     
  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. }  

 

輸出:

執行存儲過程后是否返回結果集:false  

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

存儲過程

 

  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更新計數行及調用存儲過程返回多個結果集的過程的詳細解釋及實例說明,本文就介紹到這里了,希望本次的介紹能夠對您有所收獲!

【編輯推薦】

  1. Oracle 11g數據庫審計功能應用實例解析
  2. SQL Server數據庫復制失敗的原因及解決方案
  3. SQL Server 2005數據庫游標調用函數實例解析
  4. SQL Server數據庫中FOR XML AUTO的使用詳解
  5. SQL Server數據庫用視圖來處理復雜的數據查詢關系
責任編輯:趙鵬 來源: CSDN博客
相關推薦

2011-08-25 09:31:43

JDBC調用Oracl

2009-07-08 17:17:16

JDBC調用存儲過程

2011-08-29 15:52:19

SQL ServerMybatis存儲過程

2011-08-25 09:17:31

Java調用存儲過程返回一行或多行結果集

2009-07-08 17:42:33

JDBC存儲過程

2010-01-08 13:23:38

ibmdwInfoSphere

2009-09-17 10:27:55

linq存儲過程

2009-09-09 10:54:52

Linq存儲過程返回

2011-08-18 17:32:40

Oracle存儲過程利用游標返回結果集

2009-07-22 15:58:34

JDBC調用Oracl

2009-06-22 11:04:00

Jdbc存儲過程

2010-11-29 09:34:39

Sybase數據庫存儲

2011-07-19 17:33:53

存儲過程javaibatis

2009-09-15 15:45:00

Linq聯合查詢

2009-07-17 13:54:51

JDBC存儲過程

2011-08-25 11:36:50

PreparedStaJDBC存儲過程調用

2010-05-07 13:03:01

Oracle通過存儲過

2012-05-10 11:17:23

JavaSQL Server

2009-09-09 11:14:04

Linq多個結果集

2011-08-23 13:14:05

JDBC帶輸出參數的存儲過程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 二区三区视频 | 伊人网站 | 欧美99| 99久久久国产精品 | 久久久久久久av | 国产精品久久久久久久久污网站 | 91久久夜色| 欧美日韩亚洲系列 | 欧美一区2区三区4区公司 | 精品久久久久久亚洲精品 | 天天玩天天操天天干 | 尤物视频在线免费观看 | 在线观看国产精品视频 | 中国一级特黄视频 | 日韩在线h | 日韩精品久久一区二区三区 | 亚洲精品美女视频 | 欧美国产91 | 一级片成人 | 久久精品二区亚洲w码 | 国产精品国产三级国产aⅴ中文 | 天天干天天干 | 国产精品亚洲精品日韩已方 | 精品久久久久久一区二区 | 亚洲国产日韩一区 | 欧美v在线观看 | 户外露出一区二区三区 | 国产免费一区二区三区 | 精品视频成人 | 国产精品毛片一区二区在线看 | 国产不卡一区 | av电影手机版 | 黄a在线观看| 日韩欧美中文字幕在线观看 | 毛片一区二区三区 | 亚洲香蕉在线视频 | 欧美在线观看一区 | 久久久久国产一区二区三区 | 久久这里只有精品首页 | 亚洲成人自拍 | 日本精品一区二区三区视频 |