[.NET] SQL数据总笔数查询

[.NET] SQL数据总笔数查询


程序下载


范例下载:点此下载

原始码下载:点此下载

NuGet封装:点此下载

数据查询

开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据。

SELECT Id, Name FROM Users

数据总笔数查询

当数据量过多时,系统会需要采用分页的方式来分批取得数据,但在这之前需要先取得数据总笔数,来告知系统共有多少数据等待处理。这时可以改写原有的SQL查询指令,在其中加入COUNT(*),来计算查询结果的总笔数。(将查询指令改写为子查询来取得数据总笔数,是以方便改写为前提来设计。)

SELECT COUNT(*)
FROM (

SELECT Id, Name FROM Users

) __QueryCountTable


提取为共享方法


上述这个改写SQL查询指令的动作,是很机械化的固定动作,透过抽取其中的动作流程,可以建立一个共享方法:GetQueryCountText方法。透过这个GetQueryCountText方法,开发人员传入查询的SQL查询指令,GetQueryCountText方法就会改写这个SQL查询指令,回传一个提供数据总笔数数据的SQL总笔数查询指令。开发人员使用C#来执行这个SQL总笔数查询指令,就能在系统中提供数据总笔数查询的功能。

using (SqlCommand command = new SqlCommand())
{
// Connection
command.Connection = connection;

// CommandText
command.CommandText = @"SELECT Id, Name FROM Users";

// QueryCountText
command.CommandText = SqlCommandExtensions.GetQueryCountText(command.CommandText);

// Execute
count = Convert.ToInt32(command.ExecuteScalar());
}


public static string GetQueryCountText(string commandText)
{
#region Contracts

if (string.IsNullOrEmpty(commandText) == true) throw new ArgumentNullException();

#endregion

// QueryCountText
var queryCountText = @"SELECT COUNT(*)
FROM (
{0}
) __QueryCountTable";

queryCountText = string.Format(queryCountText, commandText);

// Return
return queryCountText;
}


封装为扩充方法


为了更方便开发人员使用GetQueryCountText方法,可以将这个方法近一步封装成为SqlCommand类别的扩充方法:ExecuteQueryCount方法,让数据总笔数查询功能伪装成为SqlCommand类别的方法。后续开发人员只要建立SQL查询指令,并且执行ExecuteQueryCount方法,就能够很快速的在系统中提供数据总笔数查询的功能。

using (SqlCommand command = new SqlCommand())
{
// Connection
command.Connection = connection;

// CommandText
command.CommandText = @"SELECT Id, Name FROM Users";

// Execute
count = command.ExecuteQueryCount();
}


public static int ExecuteQueryCount(this SqlCommand command)
{
#region Contracts

if (command == null) throw new ArgumentNullException();

#endregion

// QueryCountText
var queryCountText = GetQueryCountText(command.CommandText);

// ExecuteQueryCount
var commandText = command.CommandText;
try
{
// Set
command.CommandText = queryCountText;

// Execute
return Convert.ToInt32(command.ExecuteScalar());
}
finally
{
// Reset
command.CommandText = commandText;
}
}

[.NET] SQL数据总笔数查询,布布扣,bubuko.com

时间: 2024-12-31 14:31:16

[.NET] SQL数据总笔数查询的相关文章

Sql Server 存储过程中查询数据无法使用 Union(All)

原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正常的SQL语句,使用了Union(All)查询: SELECT ci.CustId --客户编号 , ci.CustNam --客户名称 , ci.ContactBy --联系人 , ci.Conacts --联系电话 , ci.Addr -- 联系地址 , ci.Notes --备注信息 , ai

SQL Server 基础 03 查询数据基础

查询数据 简单的查询 1 create table stu_info 2 ( 3 sno int not null 4 ,sname varchar(20) not null 5 ,sex varchar(2) not null 6 ,birth varchar(20) not null 7 ,email varchar(20) not null 8 ,telephone int not null 9 ,depart varchar(20) not null 10 ) 11 12 13 sele

SQL语句技巧:查询存在一个表而不在另一个表中的数据记录

原文:SQL语句技巧:查询存在一个表而不在另一个表中的数据记录 方法一(仅适用单个字段)使用 not in ,容易理解,效率低 select A.ID from A where A.ID not in (select ID from B) 方法二(适用多个字段匹配)使用 left join...on... , "B.ID isnull" 表示左连接之后在B.ID 字段为 null的记录 select A.ID from A left join B on A.ID=B.ID where

查询一个月最后一天的总用户数,数据库中没有保存最好一天的数据,就查询本月数据库已存有的最后一天的数据

select total_user from a_user_no where date_time=(select max(date_time) from a_user_no  where '2013-05'+ "'=to_char(date_time,'yyyy-mm')); 通过max 函数来去5月份出现最大日期的数据 查询一个月最后一天的总用户数,数据库中没有保存最好一天的数据,就查询本月数据库已存有的最后一天的数据,布布扣,bubuko.com

[.NET] SQL数据分页查询

[.NET] SQL数据分页查询 程序下载 范例下载:点此下载 原始码下载:点此下载 NuGet封装:点此下载 数据查询 开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据. SELECT Id, Name FROM Users 数据分页查询 当数据量过多时,系统会需要采用分页的方式来分批取得数据.这时可以改写原有的SQL查询指令,在其中加入ROW_NUMBER(),来为每笔资料打上编号.后续依照系统需求,取得某个编号范围内的数据,就完成在系统中提供数据分页查询的功能.(

SQL数据导入/导出,操作表记录,查询及匹配条件

SQL数据导入/导出 1.1 问题 使用SQL语句完成下列导出.导入操作: 将/etc/passwd文件导入userdb库userlist表并给每条记录加编号 将userdb库userlist表中UID小于100的前10条记录导出,存为/dbak/ulist.txt文件 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:将/etc/passwd文件导入MySQL数据库 导入后的表结构取决于/etc/passwd配置文件.若一时记不住各字段的含义,也可以查看passwd配置文件的man手册页

MySQL存储引擎 SQL数据导入/导出 操作表记录 查询及匹配条件

MySQL存储引擎的配置 SQL数据导入/导出 操作表记录 查询及匹配条件 1 MySQL存储引擎的配置1.1 问题 本案例要求MySQL数据存储引擎的使用,完成以下任务操作: 可用的存储引擎类型 查看默认存储类型 更改表的存储引擎 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:查看存储引擎信息 登入MySQL服务器,查看当前支持哪些存储引擎. 使用mysql命令连接,以root用户登入: [[email protected] ~]# mysql -u root –p Enter pa

sql优化之大数据量分页查询(mysql)

当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时就需要使用分页查询.对于数据库分页查询,也有很多种方法和优化的点. 谈优化前的准备工作 为了对下面列举的一些优化进行测试,需要使用已有的一张表作为实际例子. 表名:order_history. 描述:某个业务的订单历史表. 主要字段:unsigned int id,tinyint(4) int type. 字段情况:该表一共37个字段,不包含text等大型数据,最大为varchar(500

SQL 中 not in 查询不到数据问题

在开发的过程中,遇到过not in 始终查询不到数据问题 select * from T_CustomerInfo where CustomerID not in (select CustomerID from T_OrderInfo) 后来使用not exists查询 select * from T_CustomerInfo a where not exists (select CustomerID from T_OrderInfo where CustomerID=a.CustomerID)