コード例 #1
0
        /// <summary>
        /// 生成统计数据行数的SQL
        /// </summary>
        /// <param name="CountSql"></param>
        /// <param name="Col"></param>
        /// <returns></returns>
        protected virtual ODAScript GetCountSql(IODAColumns Col)
        {
            if (_Groupby.Count > 0 || _Having.Count > 0)
            {
                throw new ODAException(10006, "Do not count the [Group by] cmd,You should probably use [ ToView(Columns).Count()] instead.");
            }

            ODAScript sql = new ODAScript()
            {
                ScriptType = SQLType.Select,
                DataBaseId = this.DataBaseId,
            };

            if (_Distinct)
            {
                sql.SqlScript.Append("SELECT COUNT(DISTINCT ");
            }
            else
            {
                sql.SqlScript.Append("SELECT COUNT(");
            }
            if (System.Object.ReferenceEquals(Col, null))
            {
                sql.SqlScript.Append("*");
            }
            else
            {
                string         SubSelectSql  = "";
                ODAParameter[] SubSelectPrms = GetSelectColumns(",", out SubSelectSql, Col);
                sql.SqlScript.Append(SubSelectSql);
                if (SubSelectPrms != null && SubSelectPrms.Length > 0)
                {
                    sql.ParamList.AddRange(SubSelectPrms);
                }
            }
            sql.SqlScript.Append(") AS TOTAL_RECORD");
            var fSql = GetFromSubString();

            sql.Merge(fSql);

            if (_WhereList.Count > 0 || _OrList.Count > 0)
            {
                sql.SqlScript.Append(" WHERE ");
                var asql = GetWhereSubSql(_WhereList, " AND ");
                sql.Merge(asql);
                if (_OrList.Count > 0)
                {
                    if (_WhereList.Count > 0)
                    {
                        sql.SqlScript.Append(" OR ");
                    }
                    var osql = GetWhereSubSql(_OrList, " OR ");
                    sql.Merge(osql);
                }
            }

            return(sql);
        }
コード例 #2
0
ファイル: ODACmd.cs プロジェクト: xiaopohou/NYear
 /// <summary>
 /// 在数据库中执行select count 语句,返统计结果
 /// </summary>
 /// <param name="Col"></param>
 /// <returns></returns>
 protected virtual int CountRecords(IODAColumns Col = null)
 {
     var sql = this.GetCountSql(Col);
     var db = this.GetDBAccess(sql);
     if (db == null)
         throw new ODAException(10007, "ODACmd Count 没有执行程序"); 
     object[] vl = db.SelectFirst(sql.SqlScript.ToString(), sql.ParamList.ToArray());
     return int.Parse(vl[0].ToString());
 }
コード例 #3
0
 /// <summary>
 /// 在数据库中执行select count 语句,返统计结果
 /// </summary>
 /// <param name="Col"></param>
 /// <returns></returns>
 public virtual int Count(IODAColumns Col = null)
 {
     try
     {
         return(CountRecords(Col));
     }
     finally
     {
         this.Clear();
     }
 }