DataRabbit 轻量的ORM框架(18)-- 捕获数据库访问异常的详细信息

DataRabbit V3.2版本新增IDBOperationLogger接口,可捕获数据库操作异常并记录SQL语句及参数。通过实现该接口,用户可以自定义异常处理逻辑,如记录执行失败的SQL语句及其参数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     最新版本的DataRabbit(版本号:V3.2)新增一项重要功能--可以捕获访问数据库时产生的异常的详细信息,包括:异常对象、Sql语句、sql参数的名称和值。这是由IDBOperationLogger接口提供支持的。

    ///   <summary>
    
///  IDBOperationLogger 用于捕获住DB操作异常。可以用于记录DB操作失败时的语句和参数。
    
///   </summary>
     public   interface  IDBOperationLogger
    {
        
void  LogException(Exception ee,  string  methodName , string  cmdText, IDataParameterCollection parameters);
    }

     当通过DataRabbit访问数据库时,所产生的任何异常,都会被IDBOperationLogger接口捕获住,你可以实现自己的Filter来对捕获的异常进行处理,比如,记录下执行失败的SQL语句和对应的参数值。

     DataRabbit内部提供了IDBOperationLogger接口的两种实现:EmptyDBOperationLogger DBOperationLoggerEmptyDBOperationLogger 将忽略异常信息,而DBOperationLogger将会把异常的详细信息记录到日志文件。

     比如,在数据库的Student表中插入一条记录时,产生主键冲突的异常,则DBOperationLogger会记录类似下面的的日志:

2008 / 11 / 19   11 : 49 : 20  : 高 -- 违反了 PRIMARY KEY 约束  ' PK_Student ' 。不能在对象  ' dbo.Student '  中插入重复键。语句已终止。错误类型:System.Data.SqlClient.SqlException。位置:
< dbCommand >
  
< method > ExcuteCommand </ method >
  
< text > INSERT INTO Student ([AutoID],[Name],[Age],[Comment]) VALUES (@AutoID,@Name,@Age,@Comment) </ text >
  
< parameters >
    
< para name = " @AutoID "  value = " 0 "   />
    
< para name = " @Name "  value = " Sky "   />
    
< para name = " @Age "  value = " 30 "   />
    
< para name = " @Comment "  value = " NoComment "   />
  
</ parameters >
</ dbCommand >

     日志中,<dbCommand>节点下的<text>子节点的内容就是执行失败的SQL语句,而<parameters>节点下的子节点则列出了所有的参数名称及其对应的值。

     那么,如何注入IDBOperationLogger实例到DataRabbit框架中了?通过TransactionScopeFactoryDBOperationLogger属性。例如:

 

            DataConfiguration config  =  ;
            TransactionScopeFactory transactionScopeFactory 
=   new  TransactionScopeFactory();
            transactionScopeFactory.DataConfiguration 
=  config;
            transactionScopeFactory.DBOperationLogger 
=   new  DBOperationLogger( " DBException.txt " );
            transactionScopeFactory.Initialize();    

     上述配置会将异常日志记录到当前目录下的DBException.txt 文件中。

 

     如果不设置DBOperationLogger属性,则DataRabbit框架默认采用EmptyDBOperationLogger

     记录执行失败的SQL语句和对应的参数值,对于我们分析异常产生的原因是十分有用的,而DataRabbit可以自动为你记录了这些信息。 

 

     关于V3.2版本的DataRabbit 请到DataRabbit 轻量的ORM框架(00) -- 序 文末处下载,谢谢!

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值