[.NET] SQL数据总笔数查询_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > [.NET] SQL数据总笔数查询

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

 2014/6/2 13:16:41  Clark159  博客园  我要评论(0)
  • 摘要:[.NET]SQL数据总笔数查询程序下载范例下载:点此下载原始码下载:点此下载NuGet封装:点此下载数据查询开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据。SELECTId,NameFROMUsers数据总笔数查询当数据量过多时,系统会需要采用分页的方式来分批取得数据,但在这之前需要先取得数据总笔数,来告知系统共有多少数据等待处理。这时可以改写原有的SQL查询指令,在其中加入COUNT(*),来计算查询结果的总笔数。(将查询指令改写为子查询来取得数据总笔数
  • 标签:.net 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());
}

提取为共享方法01

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();
}

封装为扩充方法01

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;
    }
}
上一篇: 匿名社交应用Secret入华 与中国游戏公司合作 下一篇: 没有下一篇了!
发表评论
用户名: 匿名