Exemple #1
0
        /// <summary>
        /// 普通SELECT语句取多少记录(用替代法替换)
        /// </summary>
        /// <param name="connInfo"></param>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static int Count(this DbContext connInfo, string sql, object param)
        {
            bool useRepl = sql.StartsWith("SELECT", StringComparison.OrdinalIgnoreCase) &&
                           sql.IndexOf("UNION", StringComparison.OrdinalIgnoreCase) < 0;

            if (useRepl)
            {
                if (!sql.StartsWith("SELECT COUNT(*)", StringComparison.OrdinalIgnoreCase))
                {
                    int           indexFROM    = sql.IndexOf("FROM", 0, StringComparison.OrdinalIgnoreCase);
                    int           indexORDERBY = sql.IndexOf("ORDER BY", 0, StringComparison.OrdinalIgnoreCase);
                    StringBuilder sqlbld       = new StringBuilder(512);
                    sqlbld.Append("SELECT COUNT(*) ");
                    if (0 <= indexORDERBY)
                    {
                        sqlbld.Append(sql.Substring(indexFROM, indexORDERBY - indexFROM));
                    }
                    else
                    {
                        sqlbld.Append(sql.Substring(indexFROM));
                    }
                    return(SmartCrudHelper.GetIntValue(connInfo.ExecuteScalar(sqlbld.ToString(), param)));
                }
                return(connInfo.ExecuteScalar <int>(sql, param));
            }
            else
            {
                IDataReader reader = null;
                try
                {
                    reader = connInfo.ExecuteReader(sql, param);
                    int rows = 0;
                    while (reader.Read())
                    {
                        ++rows;
                    }
                    return(rows);
                }
                finally
                {
                    if (null != reader)
                    {
                        reader.Close();
                    }
                }
            }
        }
Exemple #2
0
 public IDataReader GetReader()
 {
     return(_connInfo.ExecuteReader(GetSql(), param, cmdType: _CmdType));
 }