程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> java+sqlserver 使用分頁存儲過程

java+sqlserver 使用分頁存儲過程

編輯:關於SqlServer

251萬條數據進行查詢僅需7秒左右

--此存儲過程,將返回3個結果集,第一個空集,第二個信息集,第三個數據集
create procedure proc_fenye
@sqlstr nvarchar(4000),--查詢字符串
@currentpage int,--第N頁
@pagesize int--每頁行數
as
set nocount on
declare @P1 int,--P1是游標的id
@rowcount int,@totalpage int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
set @totalpage=ceiling(1.0*@rowcount/@pagesize)
select @currentpage as currpage,@totalpage as totalpage,@rowcount as totalrow
if @currentpage>@totalpage set @currentpage=@totalpage
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
String user="sa"; String passWord="";
Connection con= DriverManager.getConnection(url,user,passWord);
CallableStatement stat = con.prepareCall("{call proc_fenye(?,?,?)}");
stat.setString(1,"select * from t_tmp");//給存儲過程傳遞參數
stat.setInt(2,2);
stat.setInt(3,10);
stat.execute();//執行指定的存儲過程,並返回多個結果集
stat.getMoreResults();//移動到第二個
ResultSet rs1=stat.getResultSet();//返回信息集
stat.getMoreResults();//移動到第三個
ResultSet rs2=stat.getResultSet();//返回數據集

System.out.println(rs1.getString(1)); 
System.out.println(rs2.getString(1)); 

//getMoreResults();移動到此 Statement 對象的下一個結果,如果其為 ResultSet 對象,則返回 true,並隱式關閉利用方法 getResultSet 獲取的所有當前 ResultSet 對象。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved