91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server 2000下JDBC查詢分頁的解決方案是怎樣的

發布時間:2021-12-07 16:23:04 來源:億速云 閱讀:264 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關SQL Server 2000下JDBC查詢分頁的解決方案是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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

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

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Pr_QueryByPage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)  BEGIN  EXEC dbo.sp_executesql @statement = N'create    procedure  [dbo].[Pr_QueryByPage]    @sqlstr  nvarchar(4000),  --查詢sql    @currentpage  int, --第頁記錄條數    @pagesize  int --每頁顯示記錄   as    set  nocount  on    declare  @P1  int, --P1是游標的ID    @rowcount  int    exec  sp_cursoropen  @P1  output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount  output    select  ceiling(1.0*@rowcount/@pagesize)  as TotalPage,@rowcount as [RowCount]   set  @currentpage=(@currentpage-1)*@pagesize+1    exec  sp_cursorfetch  @P1,16,@currentpage,@pagesize      exec  sp_cursorclose  @P1    set  nocount  off  '   END  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取到的結果集。

CallableStatement cs = conn.prepareCall("exec Pr_QueryByPage 'select * from ckdmzd',1,10");              ResultSet rs = null;              /**              * execute returns :              *    true : returns ResultSet(s)              *  false: returns rows affected              */              boolean hasResultSet = cs.execute();              if(hasResultSet){                  /**                  * skip the first ResultSet                  */                  rs=cs.getResultSet();                  /**                  * second ResultSet : pageCount & recordCount                  */                  if(cs.getMoreResults()){                      rs=cs.getResultSet();                      while(rs.next()){                          String pageCount=rs.getString(1);                          String recordCount=rs.getString(2);                      }                  }                  /**                  * the thrid one is the paged result                  */                  if(cs.getMoreResults()){                      rs=cs.getResultSet();                      while(rs.next()){                          // do somthing with ResultSet                      }                  }              }

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

JDBC查詢總結

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

以上就是SQL Server 2000下JDBC查詢分頁的解決方案是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湖南省| 宝山区| 贵南县| 兖州市| 青铜峡市| 建湖县| 饶阳县| 林芝县| 云南省| 新兴县| 无锡市| 略阳县| 常熟市| 岑巩县| 沾化县| 阿荣旗| 冷水江市| 长海县| 会泽县| 杂多县| 兴城市| 炎陵县| 汉源县| 师宗县| 聂拉木县| 大港区| 辽源市| 鸡西市| 武乡县| 穆棱市| 怀来县| 翼城县| 阜新市| 塘沽区| 綦江县| 滨州市| 玛曲县| 江口县| 石嘴山市| 郸城县| 曲阳县|