Пример #1
0
 /// <summary>
 /// 创造一个数据库工具实例。
 /// </summary>
 /// <param name="databaseVersion">指定数据库版本。</param>
 /// <returns>数据库工具实例。</returns>
 public static DatabaseUtil GetInstance(Enum_DatabaseVersion databaseVersion)
 {
     if (!EntitySet.ContainsKey(databaseVersion))
     {
         EntitySet[databaseVersion] = new DatabaseUtil()
         {
             DatabaseVersion = databaseVersion
         };
     }
     return(EntitySet[databaseVersion]);
 }
Пример #2
0
 /// <summary>
 /// 对Sql语句进行分页处理。
 /// </summary>
 /// <param name="viewSql">待处理的Sql语句。</param>
 /// <param name="pageIndex">分页页码。</param>
 /// <param name="dataCount">每页显示数据数量。</param>
 /// <param name="sortBy">排序规则。</param>
 /// <param name="databaseVersion">数据库版本。</param>
 /// <returns>处理后的分页语句。</returns>
 public static string PagingView(string viewSql, int pageIndex, int dataCount, string sortBy, Enum_DatabaseVersion databaseVersion)
 {
     return(PagingView(viewSql, pageIndex, dataCount, sortBy, string.Empty, string.Empty, databaseVersion));
 }
Пример #3
0
        /// <summary>
        /// 对Sql语句进行分页处理。
        /// </summary>
        /// <param name="viewSql">待处理的Sql语句。</param>
        /// <param name="pageIndex">分页页码。</param>
        /// <param name="dataCount">每页显示数据数量。</param>
        /// <param name="sortBy">排序规则。</param>
        /// <param name="viewName">生成子视图名称。</param>
        /// <param name="rowIndexName">生成行标记序列名称。</param>
        /// <param name="databaseVersion">数据库版本。</param>
        /// <returns>处理后的分页语句。</returns>
        public static string PagingView(string viewSql, int pageIndex, int dataCount, string sortBy, string viewName, string rowIndexName, Enum_DatabaseVersion databaseVersion)
        {
            if (string.IsNullOrEmpty(viewSql))
            {
                return(viewSql);
            }
            if (pageIndex < 1)
            {
                pageIndex = 1;
            }
            if (dataCount < 1)
            {
                dataCount = 1;
            }
            if (string.IsNullOrEmpty(viewName))
            {
                viewName = string.Format("View_{0}", Guid.NewGuid().ToString().Replace("-", string.Empty));
            }
            if (string.IsNullOrEmpty(rowIndexName))
            {
                rowIndexName = string.Format("RowIndex_{0}", Guid.NewGuid().ToString().Replace("-", string.Empty));
            }
            switch (databaseVersion)
            {
            case Enum_DatabaseVersion.Default:
            case Enum_DatabaseVersion.OleDB:
            {
                return(viewSql);
            }

            case Enum_DatabaseVersion.SqlServer2000:
            {
                return(string.Format("select top {3} * from ({0}) as {1}_A where id not in (select top {4} id from ({0}) as {1}_B order by {2}) order by {2};select Count(*) as Amount from ({0}) as {1}_C"
                                     , viewSql
                                     , viewName
                                     , sortBy
                                     , dataCount
                                     , ((pageIndex - 1) * dataCount)
                                     ));
            }

            case Enum_DatabaseVersion.SqlServer2005:
            case Enum_DatabaseVersion.SqlServer2008:
            {
                return(string.Format("select * from (select Row_Number() over(order by {3}) as {2},* from ({0}) as {1}_A) as {1}_B where {2} between {4} and {5};select Count(*) as Amount from ({0}) as {1}_C"
                                     , viewSql
                                     , viewName
                                     , rowIndexName
                                     , sortBy
                                     , ((pageIndex - 1) * dataCount + 1)
                                     , (pageIndex * dataCount)
                                     ));
            }

            case Enum_DatabaseVersion.Oracle:
            {
                return(string.Format("select * from (select RowNum {2},* from ({0} order by {3}) {1}_A where RowNum >= {4} ) {1}_B where {1}_B.{2} <= {5};select Count(*) as Amount from ({0}) as {1}_C"
                                     , viewSql
                                     , viewName
                                     , rowIndexName
                                     , sortBy
                                     , ((pageIndex - 1) * dataCount + 1)
                                     , (pageIndex * dataCount)
                                     ));
            }

            default: goto case Enum_DatabaseVersion.Default;
            }
        }