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

淺談SQL Server 2000下JDBC查詢分頁解決方案

開發 后端
本文之所以要把SQL Server 2000 JDBC查詢分頁單獨來說說,又兩個地方還是值得一提,一者是SQL Server 2000要實現數據庫分頁是比較麻煩的事情。二者是JDBC查詢出多個ResultSet 的取法。

先在項目的classpath中添加msbase.jar,mssqlserver.jar,msutil.jar 怎么來的就不多廢話了。需要說的是我***用的SQL Server 2005 JDBC查詢驅動sqlJDBC.jar放到項目中,后來的程序是報錯的。回頭想想,報錯有理,SQL Server 2005 已經支持rownum 分頁了。

先說說SQL Server 2000的分頁的實現,目前實現方法大概是那三種。我個人還是喜歡使用存儲過程,原因是使用非常方便,至于使用的存儲過程,這里還是放出來看看,估計大家用的都大同小異。

  1. IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Pr_QueryByPage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)  
  2. BEGIN  
  3. EXEC dbo.sp_executesql @statement = N'create    procedure  [dbo].[Pr_QueryByPage]    
  4. @sqlstr  nvarchar(4000),  --查詢sql    
  5. @currentpage  int, --第頁記錄條數    
  6. @pagesize  int --每頁顯示記錄   
  7. as    
  8. set  nocount  on    
  9. declare  @P1  int, --P1是游標的ID    
  10. @rowcount  int    
  11. exec  sp_cursoropen  @P1  output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount  output    
  12. select  ceiling(1.0*@rowcount/@pagesize)  as TotalPage,@rowcount as [RowCount]   
  13. set  @currentpage=(@currentpage-1)*@pagesize+1    
  14. exec  sp_cursorfetch  @P1,16,@currentpage,@pagesize      
  15. exec  sp_cursorclose  @P1    
  16. set  nocount  off  '   
  17. END  
  18. GO 

這個存儲過程的實現,使用了三個系統存儲過程sp_cursoropen ,sp_cursorfetch ,sp_cursorclose 從字面上的意思大概是他叫結果集使用游標打開,然后讀取其中的@pageSize條記錄,所以單從查詢上來講,性能是不及使用select top 之類的實現。

使用起來非常容易,exec Pr_QueryByPage 'select * from yourtable',1,10  就可以了麻煩的是他返回的是三張表。***張表是查詢的表,但是沒有記錄。第二個表一行兩列,***個列是總頁數,第二個列是總記錄條數。第三張表才是需要的數據。這就造成了取的時候有點小麻煩,因為之前只知道,在.net中可以直接fill(DataSet),然后DataSet里面可取DataTable。但是在JDBC里面我映像中ResultSet 只能容一張表。后來找了一些資料,原來PreparedStatement,CallableStatement,Statement都支持查詢返回多個ResultSet ,好了,非常好。 下面是我使用CallableStatemnt取到的結果集。

  1. CallableStatement cs = conn.prepareCall("exec Pr_QueryByPage 'select * from ckdmzd',1,10");  
  2.             ResultSet rs = null;  
  3.             /**  
  4.             * execute returns :  
  5.             *    true : returns ResultSet(s)  
  6.             *  false: returns rows affected  
  7.             */  
  8.             boolean hasResultSet = cs.execute();  
  9.             if(hasResultSet){  
  10.                 /**  
  11.                 * skip the first ResultSet  
  12.                 */  
  13.                 rs=cs.getResultSet();  
  14.                 /**  
  15.                 * second ResultSet : pageCount & recordCount  
  16.                 */  
  17.                 if(cs.getMoreResults()){  
  18.                     rs=cs.getResultSet();  
  19.                     while(rs.next()){  
  20.                         String pageCount=rs.getString(1);  
  21.                         String recordCount=rs.getString(2);  
  22.                     }  
  23.                 }  
  24.                 /**  
  25.                 * the thrid one is the paged result  
  26.                 */  
  27.                 if(cs.getMoreResults()){  
  28.                     rs=cs.getResultSet();  
  29.                     while(rs.next()){  
  30.                         // do somthing with ResultSet  
  31.                     }  
  32.                 }  
  33.             } 

這樣就實現了分頁,網上很多人測試了,這個方法的性能不及別的方法,這里我要指出的是,別的方法是不能返回總的記錄條數的。而要知道總的記錄條數,通常需要select count(*) from ( your sql) 這兩次查詢叫起來的時間未必會少。

JDBC查詢總結

使用上述方法實現SQL Server 2000 JDBC查詢分頁,使用方便,性能還說的過去。我不知道SQL Server 2005 的查詢性能是否又提升。

【編輯推薦】

  1. 使用JDBC的五個精華功能
  2. Tomcat5+MySQL JDBC連接池配置
  3. 在Weblogic中實現JDBC的功能
  4. 詳解JDBC與Hibernate區別
  5. JDBC連接MySQL數據庫關鍵四步
  6. 淺談JDBC DAO的設計理念
責任編輯:彭凡 來源: pin5i.com
相關推薦

2009-07-17 17:41:25

JDBC連接SQL S

2010-11-10 15:23:55

SQL SERVER

2021-10-04 09:14:18

ElasticSear深度分頁

2010-10-22 14:20:35

SQL SERVER連

2010-06-17 15:33:16

SQL Server

2010-06-30 14:36:49

SQL Server

2010-06-18 10:34:38

SQL Server

2009-07-15 15:18:01

JDBC連接SQL S

2011-08-23 16:23:13

OracleMySQLSQL Server

2009-07-22 13:32:24

JDBC SQL

2017-04-13 11:20:37

圖片寬度解決方案前端

2009-04-16 13:57:28

SQL Server 全面分析擴展解決方案

2011-03-21 13:44:38

SQL ServerSQL Server2分頁

2009-07-23 13:37:45

JDBC連接SQL S

2009-07-22 13:49:40

JSP JDBC

2010-06-17 15:24:51

SQL SERVER

2009-07-09 15:06:09

SQL Server

2010-09-13 13:19:16

Sql Server分

2010-07-21 13:53:41

SQL Server分

2018-08-21 09:03:00

SQLServer服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线高清免费观看视频 | 精品视频免费 | 综合久久综合久久 | 国产精品国产精品国产专区不片 | 欧美日韩亚洲国产综合 | 三级成人片 | 成人影院在线观看 | 一区精品国产欧美在线 | 亚洲精品电影 | 日本不卡视频 | 久久久久久精 | 欧美成年黄网站色视频 | 中国一级特黄真人毛片 | 欧美性受xxx | 婷婷综合网 | 色婷婷综合在线观看 | 久久亚洲综合 | 一区二区三区四区免费在线观看 | 成人在线精品 | 成人在线视频免费看 | 亚洲精品在线视频 | 国产精品免费小视频 | a级免费黄色片 | 欧美毛片免费观看 | 国产三级精品三级在线观看四季网 | 免费国产一区二区 | 日韩精品久久一区二区三区 | 中文字幕成人 | 久久一区二区免费视频 | 手机看片169 | 日韩精品视频一区二区三区 | 天天干狠狠操 | 久久这里只有精品首页 | 亚洲精品乱码久久久久久黑人 | 欧美日韩综合一区 | h免费观看 | 久久免费看 | 精品一区二区三区在线观看国产 | 天天综合成人网 | 一区二区在线观看免费视频 | 国产在线观看一区二区三区 |