/// <summary> /// 记录 Sql 执行过程。 /// /// 把 SQL 语句及参数,写到 SQL_TRACE_FILE 配置所对应的文件中。 /// </summary> /// <param name="sql"></param> /// <param name="parameters"></param> /// <param name="connectionSchema"></param> public override void LogDbAccessed(string sql, IDbDataParameter[] parameters, DbConnectionSchema connectionSchema) { if (_sqlTraceFile == null) { _sqlTraceFile = ConfigurationHelper.GetAppSettingOrDefault("SQL_TRACE_FILE", string.Empty); } if (_sqlTraceFile.Length > 0) { var content = sql; if (parameters.Length > 0) { var pValues = parameters.Select(p => { var value = p.Value; if (value is string) { value = '"' + value.ToString() + '"'; } return value; }); content += Environment.NewLine + "Parameters:" + string.Join(",", pValues); } content = DateTime.Now + //"\r\nDatabase: " + connectionSchema.Database + "\r\nConnectionString: " + connectionSchema.ConnectionString + "\r\n" + content + "\r\n\r\n\r\n"; File.AppendAllText(_sqlTraceFile, content, Encoding.UTF8); } }
public static string GetDataSourceName(DbConnectionSchema schema) { var match = Regex.Match(schema.ConnectionString, @"Data Source=\s*(?<dataSource>[^;]+)\s*"); if (!match.Success) { throw new NotSupportedException("无法解析出此数据库连接字符串中的数据库名:" + schema.ConnectionString); } var dataSource = match.Groups["dataSource"].Value; return(dataSource); }
/// <summary> /// 获取 Oracle 连接中的用户 Id。 /// </summary> /// <param name="schema"></param> /// <returns></returns> public static string GetOracleUserId(DbConnectionSchema schema) { var match = Regex.Match(schema.ConnectionString, @"User Id=\s*(?<userId>\w+)\s*"); if (!match.Success) { throw new NotSupportedException("无法解析出此数据库连接字符串中的数据库名:" + schema.ConnectionString); } var userId = match.Groups["userId"].Value; return(userId); }
private void Init(DbConnectionSchema schema, IDbConnection connection = null) { this._connectionSchema = schema; this._factory = DbConnectorFactory.GetFactory(schema.ProviderName); this._converter = DbConnectorFactory.Create(schema.ProviderName); if (connection == null) { this._connection = this._factory.CreateConnection(); this._connection.ConnectionString = schema.ConnectionString; this._connectionCreatedBySelf = true; } else { this._connection = connection; } }
/// <summary> /// 记录 Sql 执行过程。 /// </summary> /// <param name="sql"></param> /// <param name="parameters"></param> /// <param name="connectionSchema"></param> public virtual void LogDbAccessed(string sql, IDbDataParameter[] parameters, DbConnectionSchema connectionSchema) { }
/// <summary> /// 判断指定的提供程序是否为 Oracle 提供程序。 /// 目前已知的 Oracle 提供程序有: /// System.Data.OracleClient、Oracle.DataAccess.Client、Oracle.ManagedDataAccess.Client /// </summary> /// <param name="schema">The schema.</param> /// <returns></returns> public static bool IsOracleProvider(DbConnectionSchema schema) { return(IsOracleProvider(schema.ProviderName)); }
/// <summary> /// Constructor /// </summary> /// <param name="schema">the connection schema.</param> /// <param name="dbConnection">use a exsiting connection, rather than to create a new one.</param> public DbAccesser(DbConnectionSchema schema, IDbConnection dbConnection) { this.Init(schema, dbConnection); }
/// <summary> /// Constructor /// /// this accessor uses schema to find its connection string, and creates connection by itself. /// </summary> /// <param name="schema">the connection schema.</param> public DbAccesser(DbConnectionSchema schema) { this.Init(schema); }
private void Init(DbConnectionSchema schema, IDbConnection connection = null) { this._connectionSchema = schema; this._factory = ConverterFactory.GetFactory(schema.ProviderName); this._converter = ConverterFactory.Create(schema.ProviderName); if (connection == null) { this._connection = this._factory.CreateConnection(); this._connection.ConnectionString = schema.ConnectionString; this._connectionCreatedBySelf = true; } else { this._connection = connection; } }
public DbAccessedEventArgs(string sql, IDbDataParameter[] parameters, DbConnectionSchema connectionSchema) { this.Sql = sql; this.Parameters = parameters; this.ConnectionSchema = connectionSchema; }
/// <summary> /// 记录 Sql 执行过程。 /// </summary> /// <param name="sql">The SQL.</param> /// <param name="parameters">The parameters.</param> /// <param name="connectionSchema">The connection schema.</param> public static void LogDbAccessed(string sql, IDbDataParameter[] parameters, DbConnectionSchema connectionSchema) { _dbAccessedCount++; _threadDbAccessedCount++; lock (_lock) { try { _impl.LogDbAccessed(sql, parameters, connectionSchema); } catch { } } if (EnableSqlObervation) { var handler1 = _threadDbAccessedHandler; var handler2 = DbAccessed; if (handler1 != null || handler2 != null) { var args = new DbAccessedEventArgs(sql, parameters, connectionSchema); if (handler1 != null) { handler1(null, new DbAccessedEventArgs(sql, parameters, connectionSchema)); } if (handler2 != null) { handler2(null, new DbAccessedEventArgs(sql, parameters, connectionSchema)); } } } }
/// <summary> /// 判断指定的提供程序是否为 Oracle 提供程序。 /// 目前已知的 Oracle 提供程序有: /// System.Data.OracleClient、Oracle.DataAccess.Client、Oracle.ManagedDataAccess.Client /// </summary> /// <param name="schema">The schema.</param> /// <returns></returns> public static bool IsOracleProvider(DbConnectionSchema schema) { return IsOracleProvider(schema.ProviderName); }