/// <summary> /// 记录SQL日志 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="args">参数</param> /// <returns>操作的第一行第一列或空</returns> /// <remarks> /// 注意,如果有参数时,都是匿名参数,请使用?的形式访问参数 /// </remarks> public static void TraceSql(string sql, IEnumerable <SqlParameter> args) { if (!LogRecorder.LogDataSql) { return; } if (string.IsNullOrWhiteSpace(sql)) { return; } StringBuilder code = new StringBuilder(); code.AppendLine($"/******************************{DateTime.Now}*********************************/"); var sqlParameters = args as SqlParameter[] ?? args.ToArray(); foreach (var par in sqlParameters.Where(p => p != null)) { code.AppendLine($"declare @{par.ParameterName} {par.SqlDbType};"); } foreach (var par in sqlParameters.Where(p => p != null)) { code.AppendLine($"SET @{par.ParameterName} = '{par.Value}';"); } code.AppendLine(sql); code.AppendLine("GO"); LogRecorder.RecordDataLog(code.ToString()); }
/// <summary> /// 记录SQL日志 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="args">参数</param> /// <returns>操作的第一行第一列或空</returns> /// <remarks> /// 注意,如果有参数时,都是匿名参数,请使用?的形式访问参数 /// </remarks> public static void TraceSql(string sql, IEnumerable <MySqlParameter> args) { if (!LogRecorder.LogDataSql) { return; } StringBuilder code = new StringBuilder(); code.AppendLine("/***************************************************************/"); var parameters = args as MySqlParameter[] ?? args.ToArray(); foreach (var par in parameters.Where(p => p != null)) { code.AppendLine($"declare ?{par.ParameterName} {par.MySqlDbType};"); } foreach (var par in parameters.Where(p => p != null)) { code.AppendLine($"SET ?{par.ParameterName} = '{par.Value}';"); } code.AppendLine(sql); LogRecorder.RecordDataLog(code.ToString()); }