分享
 
 
 

C#取存储过程的数据

王朝学院·作者佚名  2009-11-10
窄屏简体版  字體: |||超大  

今天自己写了一个分页的存储过程来练习一下,该存储过程一共有7个参数,其中最后一个参数的OUTPUT,用于返回一共得页数

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

ALTER PROCEDURE [dbo].[PagingProc]

@PageIndex INT, --当前页码从0开始

@PageSize INT, --每页的大小

@TableName NVARCHAR(100), --表名称

@Orders NVARCHAR(100), --排序

@Columns NVARCHAR(100), --需要检索的列集合,中间用英文逗号隔开e.g.:ID,NAME

@Filters NVARCHAR(100), --过滤条件语句

@TotalPages INT OUTPUT

AS

BEGIN

DECLARE @SQL NVARCHAR(200) --查询当前页所有记录的sql语句

DECLARE @PAGESSQL NVARCHAR(200) --查询行数的sql语句

DECLARE @TOTALCOUNT INT --一共得行数,用于计算所总页数

SET NOCOUNT ON

IF @Filters <> ''

SET @PAGESSQL = 'SELECT @TOTALCOUNT = COUNT(*) FROM ' + @TableName + ' WHERE ' + @Filters

ELSE

SET @PAGESSQL = 'SELECT @TOTALCOUNT = COUNT(*) FROM ' + @TableName

EXEC SP_EXECUTESQL @PAGESSQL, N'@TOTALCOUNT INT OUT',@TOTALCOUNT OUT

SET @TotalPages = Ceiling(CONVERT(REAL,@TOTALCOUNT) / CONVERT(REAL,@PageSize))--计算页数

SET @SQL='SELECT TOP ' + CAST(@PageSize as varchar(10)) + ' ' + @Columns + ' FROM ' + @TableName + '

WHERE ID NOT IN

(

SELECT TOP ' + CAST(@PageIndex * @PageSize as varchar(10)) + ' ID

FROM ' + @TableName

IF @Filters <> ''

SET @SQL = @SQL + ' WHERE ' + @Filters

IF @Orders <> ''

SET @SQL = @SQL + ' ORDER BY ' + @ORDERS

SET @SQL = @SQL + ')'

IF @Filters <> ''

SET @SQL = @SQL + ' AND ' + @Filters

IF @Orders <> ''

SET @SQL = @SQL + ' ORDER BY ' + @ORDERS

EXEC(@SQL)

END

下面是C#代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace PagingProcedure

{

class Program

{

static void Main(string[] args)

{

System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();

conn.ConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=Rap_Kevin;Integrated Security=True;";

System.Data.SqlClient.SqlCommand cmd = conn.CreateCommand();

cmd.CommandText = "pagingproc";

cmd.CommandType = System.Data.CommandType.StoredProcedure;

cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@PageIndex", System.Data.SqlDbType.Int));

cmd.Parameters["@PageIndex"].Value = 0;

cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@PageSize", System.Data.SqlDbType.Int));

cmd.Parameters["@PageSize"].Value = 5;

cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@TableName", System.Data.SqlDbType.VarChar, 100));

cmd.Parameters["@TableName"].Value = "Sells";

cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Orders", System.Data.SqlDbType.VarChar, 100));

cmd.Parameters["@Orders"].Value = "LastModifyTime DESC";

cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Columns", System.Data.SqlDbType.VarChar, 100));

cmd.Parameters["@Columns"].Value = "*";

cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Filters", System.Data.SqlDbType.VarChar, 100));

cmd.Parameters["@Filters"].Value = "";

cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@TotalPages", System.Data.SqlDbType.Int));

cmd.Parameters["@TotalPages"].Value = 0;

cmd.Parameters["@TotalPages"].Direction = System.Data.ParameterDirection.InputOutput;

conn.Open();

System.Data.SqlClient.SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())

{

System.Console.WriteLine((Guid)reader[0]);

}

reader.Close();

System.Console.WriteLine(cmd.Parameters["@TotalPages"].Value);

conn.Close();

}

}

}

之前弄错了,执行一次是可以获得结果集,同时也能取出OUTPUT参数的值的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有