博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#调用SQL Server分页存储过程
阅读量:6265 次
发布时间:2019-06-22

本文共 2562 字,大约阅读时间需要 8 分钟。

以SQL Server2012提供的offset ..rows fetch next ..rows only为例

e.g.

表名:Tab1----------------------------------ID	Name1	tblAttributeGroupDetail2	tblAttributeGroup3	tblAttribute.......50	tblBRItemTypeAppliesTo51	tblBRItemProperties52	tblBRItem53	tblBRBusinessRule54	Test
--创建分页存储过程 rTabByCondition
USE [ExampleDB]GOif OBJECT_ID('rTabByCondition','P') is not null  drop procedure rTabByConditionGOcreate procedure [dbo].[rTabByCondition](@PageCount int=1			--页数,@PageSize int=10			--页显示记录数,@Rowcount int=0 output		--总记录数)asset nocount on;declare @Rows int;select * from dbo.Tab1 order by ID  offset (@PageCount-1)*@PageSize rows fetch next @PageSize rows onlyset @Rows=@@ROWCOUNTselect @Rowcount=count(*) from dbo.Tab1;return @Rowsgodeclare @i int,@j intexec @i=[rTabByCondition] @PageCount=6,@PageSize=10,@Rowcount=@j outputselect @i as "@Rowcount",@j as "Return_Value"go
显示结果:

--打开Visual Studio—创建项目—选择【控制台应用程序】

#region Directivesusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data;using System.Data.SqlClient;#endregionnamespace SQLStoredProcedure2{    class Program    {        static void Main(string[] args)        {            SqlConnection thisConnection = new SqlConnection(@"Server=(Local)\SQL16;Integrated Security=True;Database=ExampleDB");            thisConnection.Open();            SqlCommand thisCommend = thisConnection.CreateCommand();            thisCommend.CommandType = CommandType.StoredProcedure;            thisCommend.CommandText = "rTabByCondition";            thisCommend.Parameters.AddWithValue("@PageCount", "6");//页数            thisCommend.Parameters.AddWithValue("@PageSize", "10");//页显示记录数            SqlParameter paraOut = thisCommend.Parameters.Add("@Rowcount", SqlDbType.Int);//输出参数定义            paraOut.Direction = ParameterDirection.Output;            SqlParameter paraRet = thisCommend.Parameters.Add("return_value", SqlDbType.Int);//返回值            paraRet.Direction = ParameterDirection.ReturnValue;            SqlDataReader thisReader = thisCommend.ExecuteReader();            while (thisReader.Read())            {                Console.WriteLine("ID:{0}\tName:{1}", thisReader[0], thisReader[1]);            }            thisReader.Close();            thisConnection.Close();            Console.WriteLine("Rows:{0};\tReturn_Value:{1};", paraOut.Value, paraRet.Value);            Console.WriteLine("Program finished,press Enter/Return to continue:");            Console.ReadLine();        }    }}
显示效果:

转载于:https://www.cnblogs.com/wuxi88/p/5466721.html

你可能感兴趣的文章
LeetCode——Intersection of Two Linked Lists
查看>>
对拍——我目前可以找到的最简写法
查看>>
js之广告弹出自动关闭
查看>>
axios请求requestBody和formData
查看>>
PSQL_标准API和Interface基本的用法和比较(概念)
查看>>
网站目录
查看>>
APUE-文件和目录(七)符号链接
查看>>
CSS 简介
查看>>
System Verilog基础(二)
查看>>
2018/11/26 Samba服务器配置
查看>>
2018/12/08 PAT刷题 L1-034 点赞
查看>>
如何改变TextBox.PassWordChar的值 转
查看>>
css的工作原理
查看>>
【pip】的安装
查看>>
内存泄漏及其检测工具
查看>>
QT Model based vs Item based
查看>>
[Leetcode]669 Trim a Binary Search Tree
查看>>
Linux C Programing - Arguments(2)
查看>>
禁止选择文本和禁用右键 v1.0
查看>>
swift 动画
查看>>