/// <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(); } } } }
public IDataReader GetReader() { return(_connInfo.ExecuteReader(GetSql(), param, cmdType: _CmdType)); }