Пример #1
0
 /// <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 + Environment.NewLine + "Database:  " + connectionSchema.Database + Environment.NewLine + content + "\r\n\r\n\r\n";
         AppendAllText(_sqlTraceFile, content);
     }
 }
Пример #2
0
        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;
            }
        }
Пример #3
0
 public override void LogDbAccessed(string sql, IDbDataParameter[] parameters, DbConnectionSchema connectionSchema)
 {
     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\n" + content + "\r\n\r\n\r\n";
     TraceMessage(content);
 }
Пример #4
0
 /// <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);
 }
Пример #5
0
        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;
            }
        }
Пример #6
0
 /// <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);
 }
Пример #7
0
 /// <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);
 }
Пример #8
0
 /// <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);
 }
Пример #9
0
 public DbAccessedEventArgs(string sql, IDbDataParameter[] parameters, DbConnectionSchema connectionSchema)
 {
     this.Sql = sql;
     this.Parameters = parameters;
     this.ConnectionSchema = connectionSchema;
 }
Пример #10
0
        /// <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));
                    }
                }
            }
        }
Пример #11
0
 /// <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) { }