前些时间看了玉开兄的“ 如此高效通用的分页存储过程是带有sql注入漏洞的 ”这篇文章,才突然想起某个项目也是使用了累似的通用分页存储过程。使用这种通用的存储过程进行分页查询,想要防SQL注入,只能对输入的参数进行过滤,例如将一个单引号“'”转换成两个单引号“''”,但这种做法是不安全的,厉害的黑客可以通过编码的方式绕过单引号的过滤,要想有效防SQL注入,只有参数化查询才是最终的解决方案。但问题就出在这种通用分页存储过程是在存储过程内部进行SQL语句拼接,根本无法修改为参数化的查询语句,因此这种通用分页存储过程是不可取的。但是如果不用通用的分页存储过程,则意味着必须为每个具体的分页查询写一个分页存储过程,这会增加不少的工作量。
经过几天的时间考虑之后,想到了一个用代码来生成参数化的通用分页查询语句的解决方案。代码如下:
 
     Code
    
      Code
    
    
       public
      
      
         
      
      
        class
      
      
         PagerQuery
      
            
      
      
        public
      
      
         
      
      
        class
      
      
         PagerQuery
         
         
            
      
      
         {
      
      
        
          {
           private
        
        
           
        
        
          int
        
        
           _pageIndex;
                  
        
        
          private
        
        
           
        
        
          int
        
        
           _pageIndex;
           private
        
        
           
        
        
          int
        
        
           _pageSize 
        
        
          =
        
        
           
        
        
          20
        
        
          ;
                  
        
        
          private
        
        
           
        
        
          int
        
        
           _pageSize 
        
        
          =
        
        
           
        
        
          20
        
        
          ;
           private
        
        
           
        
        
          string
        
        
           _pk;
                  
        
        
          private
        
        
           
        
        
          string
        
        
           _pk;
           private
        
        
           
        
        
          string
        
        
           _fromClause;
                  
        
        
          private
        
        
           
        
        
          string
        
        
           _fromClause;
           private
        
        
           
        
        
          string
        
        
           _groupClause;
                  
        
        
          private
        
        
           
        
        
          string
        
        
           _groupClause;
           private
        
        
           
        
        
          string
        
        
           _selectClause;
                  
        
        
          private
        
        
           
        
        
          string
        
        
           _selectClause;
           private
        
        
           
        
        
          string
        
        
           _sortClause;
                  
        
        
          private
        
        
           
        
        
          string
        
        
           _sortClause;
           private
        
        
           StringBuilder _whereClause;
                  
        
        
          private
        
        
           StringBuilder _whereClause;
           public
        
        
           DateTime DateFilter 
        
        
          =
        
        
           DateTime.MinValue;
                  
        
        
          public
        
        
           DateTime DateFilter 
        
        
          =
        
        
           DateTime.MinValue;
           
           protected
        
        
           QueryBase()
                  
        
        
          protected
        
        
           QueryBase()
           
           
                  
        
        
           {
        
        
          
            {
             _whereClause 
          
          
            =
          
          
             
          
          
            new
          
          
             StringBuilder();
                        _whereClause 
          
          
            =
          
          
             
          
          
            new
          
          
             StringBuilder();
             }
                    }
          
        
        
           
           
           /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
                  
        
        
          /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
          
          
             ///
          
          
             主键
                    
          
          
            ///
          
          
             主键
             ///
          
          
             
          
          
            </summary>
                    
          
          
            ///
          
          
             
          
          
            </summary>
          
        
         public
        
        
           
        
        
          string
        
        
           PK
        
                  
        
        
          public
        
        
           
        
        
          string
        
        
           PK
           
           
                  
        
        
           {
        
        
          
            {
             
             get
                        
          
          
            get
          
          
             
          
          
             { 
            
            
              return
            
            
               _pk; }
          
          
            
              { 
            
            
              return
            
            
               _pk; }
            
          
          
             
             set
                        
          
          
            set
          
          
             
          
          
             { _pk 
            
            
              =
            
            
               value; }
          
          
            
              { _pk 
            
            
              =
            
            
               value; }
            
          
          
             }
                    }
          
        
        
           
           public
        
        
           
        
        
          string
        
        
           SelectClause
                  
        
        
          public
        
        
           
        
        
          string
        
        
           SelectClause
           
           
                  
        
        
           {
        
        
          
            {
             
             get
                        
          
          
            get
          
          
             
          
          
             { 
            
            
              return
            
            
               _selectClause; }
          
          
            
              { 
            
            
              return
            
            
               _selectClause; }
            
          
          
             
             set
                        
          
          
            set
          
          
             
          
          
             { _selectClause 
            
            
              =
            
            
               value; }
          
          
            
              { _selectClause 
            
            
              =
            
            
               value; }
            
          
          
             }
                    }
          
        
        
           
           public
        
        
           
        
        
          string
        
        
           FromClause
                  
        
        
          public
        
        
           
        
        
          string
        
        
           FromClause
           
           
                  
        
        
           {
        
        
          
            {
             
             get
                        
          
          
            get
          
          
             
          
          
             { 
            
            
              return
            
            
               _fromClause; }
          
          
            
              { 
            
            
              return
            
            
               _fromClause; }
            
          
          
             
             set
                        
          
          
            set
          
          
             
          
          
             { _fromClause 
            
            
              =
            
            
               value; }
          
          
            
              { _fromClause 
            
            
              =
            
            
               value; }
            
          
          
             }
                    }
          
        
        
           
           public
        
        
           StringBuilder WhereClause
                  
        
        
          public
        
        
           StringBuilder WhereClause
           
           
                  
        
        
           {
        
        
          
            {
             
             get
                        
          
          
            get
          
          
             
          
          
             { 
            
            
              return
            
            
               _whereClause; }
          
          
            
              { 
            
            
              return
            
            
               _whereClause; }
            
          
          
             
             set
                        
          
          
            set
          
          
             
          
          
             { _whereClause 
            
            
              =
            
            
               value; }
          
          
            
              { _whereClause 
            
            
              =
            
            
               value; }
            
          
          
             }
                    }
          
        
        
           
           public
        
        
           
        
        
          string
        
        
           GroupClause
                  
        
        
          public
        
        
           
        
        
          string
        
        
           GroupClause
           
           
                  
        
        
           {
        
        
          
            {
             
             get
                        
          
          
            get
          
          
             
          
          
             { 
            
            
              return
            
            
               _groupClause; }
          
          
            
              { 
            
            
              return
            
            
               _groupClause; }
            
          
          
             
             set
                        
          
          
            set
          
          
             
          
          
             { _groupClause 
            
            
              =
            
            
               value; }
          
          
            
              { _groupClause 
            
            
              =
            
            
               value; }
            
          
          
             }
                    }
          
        
        
           
           public
        
        
           
        
        
          string
        
        
           SortClause
                  
        
        
          public
        
        
           
        
        
          string
        
        
           SortClause
           
           
                  
        
        
           {
        
        
          
            {
             
             get
                        
          
          
            get
          
          
             
          
          
             { 
            
            
              return
            
            
               _sortClause; }
          
          
            
              { 
            
            
              return
            
            
               _sortClause; }
            
          
          
             
             set
                        
          
          
            set
          
          
             
          
          
             { _sortClause 
            
            
              =
            
            
               value; }
          
          
            
              { _sortClause 
            
            
              =
            
            
               value; }
            
          
          
             }
                    }
          
        
        
           
           
           /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
                  
        
        
          /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
          
          
             ///
          
          
             当前页数
                    
          
          
            ///
          
          
             当前页数
             ///
          
          
             
          
          
            </summary>
                    
          
          
            ///
          
          
             
          
          
            </summary>
          
        
         public
        
        
           
        
        
          int
        
        
           PageIndex
        
                  
        
        
          public
        
        
           
        
        
          int
        
        
           PageIndex
           
           
                  
        
        
           {
        
        
          
            {
             
             get
                        
          
          
            get
          
          
             
          
          
             { 
            
            
              return
            
            
               _pageIndex; }
          
          
            
              { 
            
            
              return
            
            
               _pageIndex; }
            
          
          
             
             set
                        
          
          
            set
          
          
             
          
          
             { _pageIndex 
            
            
              =
            
            
               value; }
          
          
            
              { _pageIndex 
            
            
              =
            
            
               value; }
            
          
          
             }
                    }
          
        
        
           
           
           /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
                  
        
        
          /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
          
          
             ///
          
          
             分页大小
                    
          
          
            ///
          
          
             分页大小
             ///
          
          
             
          
          
            </summary>
                    
          
          
            ///
          
          
             
          
          
            </summary>
          
        
         public
        
        
           
        
        
          int
        
        
           PageSize
        
                  
        
        
          public
        
        
           
        
        
          int
        
        
           PageSize
           
           
                  
        
        
           {
        
        
          
            {
             
             get
                        
          
          
            get
          
          
             
          
          
             { 
            
            
              return
            
            
               _pageSize; }
          
          
            
              { 
            
            
              return
            
            
               _pageSize; }
            
          
          
             
             set
                        
          
          
            set
          
          
             
          
          
             { _pageSize 
            
            
              =
            
            
               value; }
          
          
            
              { _pageSize 
            
            
              =
            
            
               value; }
            
          
          
             }
                    }
          
        
        
           
           
           /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
                  
        
        
          /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
          
          
             ///
          
          
             生成缓存Key
                    
          
          
            ///
          
          
             生成缓存Key
             ///
          
          
             
          
          
            </summary>
                    
          
          
            ///
          
          
             
          
          
            </summary>
          
          
             ///
          
          
             
          
          
            <returns></returns>
                    
          
          
            ///
          
          
             
          
          
            <returns></returns>
          
        
         public
        
        
           
        
        
          override
        
        
           
        
        
          string
        
        
           GetCacheKey()
        
                  
        
        
          public
        
        
           
        
        
          override
        
        
           
        
        
          string
        
        
           GetCacheKey()
           
           
                  
        
        
           {
        
        
          
            {
             const
          
          
             
          
          
            string
          
          
             keyFormat 
          
          
            =
          
          
             
          
          
            "
          
          
            Pager-SC:{0}-FC:{1}-WC:{2}-GC:{3}-SC:{4}
          
          
            "
          
          
            ;
                        
          
          
            const
          
          
             
          
          
            string
          
          
             keyFormat 
          
          
            =
          
          
             
          
          
            "
          
          
            Pager-SC:{0}-FC:{1}-WC:{2}-GC:{3}-SC:{4}
          
          
            "
          
          
            ;
             return
          
          
             
          
          
            string
          
          
            .Format(keyFormat, SelectClause, FromClause, WhereClause, GroupClause, SortClause);
                        
          
          
            return
          
          
             
          
          
            string
          
          
            .Format(keyFormat, SelectClause, FromClause, WhereClause, GroupClause, SortClause);
             }
                    }
          
        
        
           
           
           /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
                  
        
        
          /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
          
          
             ///
          
          
             生成查询记录总数的SQL语句
                    
          
          
            ///
          
          
             生成查询记录总数的SQL语句
             ///
          
          
             
          
          
            </summary>
                    
          
          
            ///
          
          
             
          
          
            </summary>
          
          
             ///
          
          
             
          
          
            <returns></returns>
                    
          
          
            ///
          
          
             
          
          
            <returns></returns>
          
        
         public
        
        
           
        
        
          string
        
        
           GenerateCountSql()
        
                  
        
        
          public
        
        
           
        
        
          string
        
        
           GenerateCountSql()
           
           
                  
        
        
           {
        
        
          
            {
             StringBuilder sb 
          
          
            =
          
          
             
          
          
            new
          
          
             StringBuilder();
                        StringBuilder sb 
          
          
            =
          
          
             
          
          
            new
          
          
             StringBuilder();
             
             sb.AppendFormat(
          
          
            "
          
          
             from {0}
          
          
            "
          
          
            , FromClause);
                        sb.AppendFormat(
          
          
            "
          
          
             from {0}
          
          
            "
          
          
            , FromClause);
             if
          
          
             (WhereClause.Length 
          
          
            >
          
          
             
          
          
            0
          
          
            )
                        
          
          
            if
          
          
             (WhereClause.Length 
          
          
            >
          
          
             
          
          
            0
          
          
            )
             sb.AppendFormat(
          
          
            "
          
          
             where 1=1 {0}
          
          
            "
          
          
            , WhereClause);
                            sb.AppendFormat(
          
          
            "
          
          
             where 1=1 {0}
          
          
            "
          
          
            , WhereClause);
             
             if
          
          
             (
          
          
            !
          
          
            string
          
          
            .IsNullOrEmpty(GroupClause))
                        
          
          
            if
          
          
             (
          
          
            !
          
          
            string
          
          
            .IsNullOrEmpty(GroupClause))
             sb.AppendFormat(
          
          
            "
          
          
             group by {0}
          
          
            "
          
          
            , GroupClause);
                            sb.AppendFormat(
          
          
            "
          
          
             group by {0}
          
          
            "
          
          
            , GroupClause);
             
             return
          
          
             
          
          
            string
          
          
            .Format(
          
          
            "
          
          
            Select count(0) {0}
          
          
            "
          
          
            , sb);
                        
          
          
            return
          
          
             
          
          
            string
          
          
            .Format(
          
          
            "
          
          
            Select count(0) {0}
          
          
            "
          
          
            , sb);
             }
                    }
          
        
        
           
           
           /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
                  
        
        
          /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
          
          
             ///
          
          
             生成分页查询语句,包含记录总数
                    
          
          
            ///
          
          
             生成分页查询语句,包含记录总数
             ///
          
          
             
          
          
            </summary>
                    
          
          
            ///
          
          
             
          
          
            </summary>
          
          
             ///
          
          
             
          
          
            <returns></returns>
                    
          
          
            ///
          
          
             
          
          
            <returns></returns>
          
        
         public
        
        
           
        
        
          string
        
        
           GenerateSqlIncludeTotalRecords()
        
                  
        
        
          public
        
        
           
        
        
          string
        
        
           GenerateSqlIncludeTotalRecords()
           
           
                  
        
        
           {
        
        
          
            {
             StringBuilder sb 
          
          
            =
          
          
             
          
          
            new
          
          
             StringBuilder();
                        StringBuilder sb 
          
          
            =
          
          
             
          
          
            new
          
          
             StringBuilder();
             if
          
          
             (
          
          
            string
          
          
            .IsNullOrEmpty(SelectClause))
                        
          
          
            if
          
          
             (
          
          
            string
          
          
            .IsNullOrEmpty(SelectClause))
             SelectClause 
          
          
            =
          
          
             
          
          
            "
          
          
            *
          
          
            "
          
          
            ;
                            SelectClause 
          
          
            =
          
          
             
          
          
            "
          
          
            *
          
          
            "
          
          
            ;
             
             if
          
          
             (
          
          
            string
          
          
            .IsNullOrEmpty(SortClause))
                        
          
          
            if
          
          
             (
          
          
            string
          
          
            .IsNullOrEmpty(SortClause))
             SortClause 
          
          
            =
          
          
             PK;
                            SortClause 
          
          
            =
          
          
             PK;
             
             int
          
          
             start_row_num 
          
          
            =
          
          
             (PageIndex 
          
          
            -
          
          
             
          
          
            1
          
          
            )
          
          
            *
          
          
            PageSize 
          
          
            +
          
          
             
          
          
            1
          
          
            ;
                        
          
          
            int
          
          
             start_row_num 
          
          
            =
          
          
             (PageIndex 
          
          
            -
          
          
             
          
          
            1
          
          
            )
          
          
            *
          
          
            PageSize 
          
          
            +
          
          
             
          
          
            1
          
          
            ;
             
             sb.AppendFormat(
          
          
            "
          
          
             from {0}
          
          
            "
          
          
            , FromClause);
                        sb.AppendFormat(
          
          
            "
          
          
             from {0}
          
          
            "
          
          
            , FromClause);
             if
          
          
             (WhereClause.Length 
          
          
            >
          
          
             
          
          
            0
          
          
            )
                        
          
          
            if
          
          
             (WhereClause.Length 
          
          
            >
          
          
             
          
          
            0
          
          
            )
             sb.AppendFormat(
          
          
            "
          
          
             where 1=1 {0}
          
          
            "
          
          
            , WhereClause);
                            sb.AppendFormat(
          
          
            "
          
          
             where 1=1 {0}
          
          
            "
          
          
            , WhereClause);
             
             if
          
          
             (
          
          
            !
          
          
            string
          
          
            .IsNullOrEmpty(GroupClause))
                        
          
          
            if
          
          
             (
          
          
            !
          
          
            string
          
          
            .IsNullOrEmpty(GroupClause))
             sb.AppendFormat(
          
          
            "
          
          
             group by {0}
          
          
            "
          
          
            , GroupClause);
                            sb.AppendFormat(
          
          
            "
          
          
             group by {0}
          
          
            "
          
          
            , GroupClause);
             
             string
          
          
             countSql 
          
          
            =
          
          
             
          
          
            string
          
          
            .Format(
          
          
            "
          
          
            Select count(0) {0};
          
          
            "
          
          
            , sb);
                        
          
          
            string
          
          
             countSql 
          
          
            =
          
          
             
          
          
            string
          
          
            .Format(
          
          
            "
          
          
            Select count(0) {0};
          
          
            "
          
          
            , sb);
             string
          
          
             tempSql 
          
          
            =
                        
          
          
            string
          
          
             tempSql 
          
          
            =
          
          
             string
          
          
            .Format(
                            
          
          
            string
          
          
            .Format(
             "
          
          
            WITH t AS (SELECT ROW_NUMBER() OVER(ORDER BY {0}) as row_number,{1}{2}) Select * from t where row_number BETWEEN {3} and {4};
          
          
            "
          
          
            ,
                                
          
          
            "
          
          
            WITH t AS (SELECT ROW_NUMBER() OVER(ORDER BY {0}) as row_number,{1}{2}) Select * from t where row_number BETWEEN {3} and {4};
          
          
            "
          
          
            ,
             SortClause, SelectClause, sb, start_row_num, (start_row_num 
          
          
            +
          
          
             PageSize 
          
          
            -
          
          
             
          
          
            1
          
          
            ));
                                SortClause, SelectClause, sb, start_row_num, (start_row_num 
          
          
            +
          
          
             PageSize 
          
          
            -
          
          
             
          
          
            1
          
          
            ));
             
             return
          
          
             tempSql 
          
          
            +
          
          
             countSql;
                        
          
          
            return
          
          
             tempSql 
          
          
            +
          
          
             countSql;
             }
                    }
          
        
        
           
           
           /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
                  
        
        
          /**/
        
        
          
            ///
          
          
             
          
          
            <summary>
          
          
             ///
          
          
             生成分页查询语句
                    
          
          
            ///
          
          
             生成分页查询语句
             ///
          
          
             
          
          
            </summary>
                    
          
          
            ///
          
          
             
          
          
            </summary>
          
          
             ///
          
          
             
          
          
            <returns></returns>
                    
          
          
            ///
          
          
             
          
          
            <returns></returns>
          
        
         public
        
        
           
        
        
          override
        
        
           
        
        
          string
        
        
           GenerateSql()
        
                  
        
        
          public
        
        
           
        
        
          override
        
        
           
        
        
          string
        
        
           GenerateSql()
           
           
                  
        
        
           {
        
        
          
            {
             StringBuilder sb 
          
          
            =
          
          
             
          
          
            new
          
          
             StringBuilder();
                        StringBuilder sb 
          
          
            =
          
          
             
          
          
            new
          
          
             StringBuilder();
             if
          
          
             (
          
          
            string
          
          
            .IsNullOrEmpty(SelectClause))
                        
          
          
            if
          
          
             (
          
          
            string
          
          
            .IsNullOrEmpty(SelectClause))
             SelectClause 
          
          
            =
          
          
             
          
          
            "
          
          
            *
          
          
            "
          
          
            ;
                            SelectClause 
          
          
            =
          
          
             
          
          
            "
          
          
            *
          
          
            "
          
          
            ;
             
             if
          
          
             (
          
          
            string
          
          
            .IsNullOrEmpty(SortClause))
                        
          
          
            if
          
          
             (
          
          
            string
          
          
            .IsNullOrEmpty(SortClause))
             SortClause 
          
          
            =
          
          
             PK;
                            SortClause 
          
          
            =
          
          
             PK;
             
             int
          
          
             start_row_num 
          
          
            =
          
          
             (PageIndex 
          
          
            -
          
          
             
          
          
            1
          
          
            )
          
          
            *
          
          
            PageSize 
          
          
            +
          
          
             
          
          
            1
          
          
            ;
                        
          
          
            int
          
          
             start_row_num 
          
          
            =
          
          
             (PageIndex 
          
          
            -
          
          
             
          
          
            1
          
          
            )
          
          
            *
          
          
            PageSize 
          
          
            +
          
          
             
          
          
            1
          
          
            ;
             
             sb.AppendFormat(
          
          
            "
          
          
             from {0}
          
          
            "
          
          
            , FromClause);
                        sb.AppendFormat(
          
          
            "
          
          
             from {0}
          
          
            "
          
          
            , FromClause);
             if
          
          
             (WhereClause.Length 
          
          
            >
          
          
             
          
          
            0
          
          
            )
                        
          
          
            if
          
          
             (WhereClause.Length 
          
          
            >
          
          
             
          
          
            0
          
          
            )
             sb.AppendFormat(
          
          
            "
          
          
             where 1=1 {0}
          
          
            "
          
          
            , WhereClause);
                            sb.AppendFormat(
          
          
            "
          
          
             where 1=1 {0}
          
          
            "
          
          
            , WhereClause);
             
             if
          
          
             (
          
          
            !
          
          
            string
          
          
            .IsNullOrEmpty(GroupClause))
                        
          
          
            if
          
          
             (
          
          
            !
          
          
            string
          
          
            .IsNullOrEmpty(GroupClause))
             sb.AppendFormat(
          
          
            "
          
          
             group by {0}
          
          
            "
          
          
            , GroupClause);
                            sb.AppendFormat(
          
          
            "
          
          
             group by {0}
          
          
            "
          
          
            , GroupClause);
             
             return
                        
          
          
            return
          
          
             string
          
          
            .Format(
                            
          
          
            string
          
          
            .Format(
             "
          
          
            WITH t AS (SELECT ROW_NUMBER() OVER(ORDER BY {0}) as row_number,{1}{2}) Select * from t where row_number BETWEEN {3} and {4}
          
          
            "
          
          
            ,
                                
          
          
            "
          
          
            WITH t AS (SELECT ROW_NUMBER() OVER(ORDER BY {0}) as row_number,{1}{2}) Select * from t where row_number BETWEEN {3} and {4}
          
          
            "
          
          
            ,
             SortClause, SelectClause, sb, start_row_num, (start_row_num 
          
          
            +
          
          
             PageSize 
          
          
            -
          
          
             
          
          
            1
          
          
            ));
                                SortClause, SelectClause, sb, start_row_num, (start_row_num 
          
          
            +
          
          
             PageSize 
          
          
            -
          
          
             
          
          
            1
          
          
            ));
             }
                    }
          
        
        
           }
              }
        
      
    
  
使用方法:
    PagerQuery query = new PagerQuery();
    
     query.PageIndex = 1;
    
         query.PageSize = 20;
    
         query.PK = "ID";
    
         query.SelectClause = "*";
    
         query.FromClause = "TestTable";
    
         query.SortClause = "ID DESC";
  
        if (!string.IsNullOrEmpty(code))
    
         {
    
          query.WhereClause.Append(" and ID= @ID");
    
         }
  
    a) GenerateCountSql ()方法生成的语句为:
    
     Select count(0) from TestTable Where 1=1 and ID= @ID
  
    b) GenerateSql()方法生成的语句为:
    
     WITH t AS (SELECT ROW_NUMBER() OVER(ORDER BY ECID DESC) as row_number, * from TestTable where 1=1 and ID= @ID) Select * from t where row_number BETWEEN 1 and 20
  
    c) GenerateSqlIncludetTotalRecords()方法生成的语句为:
    
     WITH t AS (SELECT ROW_NUMBER() OVER(ORDER BY E.ECID DESC) as row_number,* from TestTable where 1=1 and ID= @ID) Select * from t where row_number BETWEEN 1 and 20;Select count(0) from ECBasicInfo where 1=1 and ID= @ID;
    
  
注意:以上代码生成的SQL语句是曾对SQL SERVER 2005以上版本的,希望这些代码对大家有用
更多文章、技术交流、商务合作、联系博主
微信扫码或搜索:z360901061
 
					微信扫一扫加我为好友
QQ号联系: 360901061
您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。
【本文对您有帮助就好】元
 
					

