java 调用SqlServer分页存储过程的,返回多个结果集
来源:互联网 发布:大数据技术是指 编辑:程序博客网 时间:2024/05/01 22:08
存储过程:
USE [Db_8za8za_2] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Description: <Description,,通用分页存储过程> -- ============================================= ALTER PROCEDURE [dbo].[paging ] -- Add the parameters for the stored procedure here --传入参数 @SqlStr nvarchar(4000), --查询字符串 @CurrentPage int, --第N页(当前页数) @PageSize int --每页行数 AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; --定义变量 DECLARE @CursorId int --CursorId是游标的id DECLARE @Rowcount int --总记录(行)数 DECLARE @pageCount int --总页数 -- Insert statements for procedure here EXEC sp_cursoropen @CursorId output,@SqlStr, @Scrollopt=1,@Ccopt=1,@Rowcount=@Rowcount OUTPUT SET @pageCount=CEILING(1.0*@Rowcount/@PageSize)--设置总页数 SELECT @pageCount AS 总页数,@Rowcount AS 总行数,@CurrentPage AS 当前页 --提示页数 IF(@CurrentPage>@pageCount)--如果传入的当前页码大入总页码数则把当前页数设为最后一页 BEGIN SET @CurrentPage = @pageCount--设置当前页码数 END IF(@CurrentPage<=0)--如果传入的当前页码大入总页码数则把当前页数设为第一页 BEGIN SET @CurrentPage = 1--设置当前页码数 END SET @CurrentPage=(@CurrentPage-1)*@PageSize+1 --设置当前页码数 EXEC sp_cursorfetch @CursorId,16,@CurrentPage,@PageSize EXEC sp_cursorclose @CursorId --关闭游标 SET NOCOUNT OFF END
Java调用储存过程:
package test; import java.sql.*; public class Study3 { private Connection con; public ResultSet rs; private CallableStatement callsta; private String use = "sa"; private String pwd = "sa"; public Study3() { try { // 连接数据库驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); String str = "jdbc:microsoft:sqlserver://localhost:1433;databasename=test"; con = DriverManager.getConnection(str, use, pwd); // 设置存储过程参数 String st = "{call Paging(?,?,?)}"; callsta = con.prepareCall(st); callsta.setString(1, "select * from T_employee"); callsta.setInt(2, 1); callsta.setInt(3, 3); // 循环输出调用存储过程的记录结果 StringBuffer sb=new StringBuffer(); int rsNum=0;//统计结果集的数量 int updateCount = -1; boolean flag = callsta.execute();// 这个而尔值只说明第一个返回内容是更新计数还是结果集。 do { updateCount = callsta.getUpdateCount(); if (updateCount != -1) {// 说明当前行是一个更新计数 // 处理. System.out.println("..说明当前行是一个更新计数.."); callsta.getMoreResults(); continue;// 已经是更新计数了,处理完成后应该移动到下一行 // 不再判断是否是ResultSet } rs = callsta.getResultSet(); if (rs != null) {// 如果到了这里,说明updateCount == -1 // 处理rs rsNum++; System.out.println("统计结果集的数量:"+rsNum); if (rs != null) { ResultSetMetaData rsmd = rs.getMetaData(); // 获取字段名 int numberOfColumns = rsmd.getColumnCount(); // 获取字段数 int i = 0; while (rs.next()) { // 将查询结果取出 for (i = 1; i <= numberOfColumns; i++) { // System.out.println(rs.getInt("总页数")); String date = rs.getString(i); sb.append(date+" "); } } rs.close(); } callsta.getMoreResults(); continue; // 是结果集,处理完成后应该移动到下一行 } // 如果到了这里,说明updateCount == -1 && rs == null,什么也没的了 System.out.println(sb.toString()); } while (!(updateCount == -1 && rs == null)); // callsta.getXXX(int);//获取输出参数 } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] age) { Study3 study = new Study3(); } }
0 0
- java 调用SqlServer分页存储过程的,返回多个结果集
- java 调用SqlServer分页存储过程的,返回多个结果集
- JAVA调用sqlserver存储过程的实现(返回多个结果集的实现)
- java调用oracle存储过程 返回多个结果集
- Java调用oracle存储过程返回多个结果集
- Java调用存储过程返回多个结果集
- java 调用存储过程返回多个结果集
- sqlserver 存储过程 返回多个select 结果集
- Java获取存储过程返回的多个结果集
- Java获取存储过程返回的多个结果集
- Java获取存储过程返回的多个结果集
- Mybatis调用存储过程返回多个结果集
- Mybatis调用存储过程返回多个结果集
- mybatis调用存储过程返回多个结果集
- jdbc调用存储过程,遍历两个结果集(获取存储过程返回的多个结果集),珍藏版
- java调用存储过程,返回结果集
- java调用存储过程返回结果集
- java调用mysql存储过程返回多个结果集,与.net不同
- js获取对象的绝对坐标
- Spring-jdbc详解及案例<四>
- 在JS代码中获取Struts2中的返回值或者参数
- VC++中List Control控件的使用方法介绍
- IT从业人员想要提高薪酬水平的十种技能方法
- java 调用SqlServer分页存储过程的,返回多个结果集
- 关于多结果集的存储过程的处理
- Java 中 StringBuilder 在高性能用法总结
- sql 添加 删除 判断字段是否存在
- 云计算服务
- android listview/ScrollView 去除顶部下拉时的半月形阴影和上下滑动顶部和底部的虚化
- 据说看完这21个故事的人,30岁前都成了亿万富翁。你是下一个吗?
- 软件开发人员的作战手册 - 让程序员活的久一点
- 想玩Google + 的留下你的邮箱!