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

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

     最新版本的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) -- 序 文末处下载,谢谢!

 

 

 

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
SQL 开发框架 JavaScript
在 Vue 中进行数据持久化时,有哪些常用的数据库框架?
在 Vue 中进行数据持久化时,有哪些常用的数据库框架?
49 3
|
1月前
|
XML Java 数据库连接
WebGIS 信息系统-数据库设计
WebGIS 信息系统-数据库设计
41 0
|
24天前
|
存储 NoSQL Java
Java数据库编程指南:实现高效数据存储与访问
【4月更文挑战第2天】Java开发者必须掌握数据库编程,尤其是JDBC,它是连接数据库的标准接口。使用Spring JDBC或JPA能简化操作。选择合适的JDBC驱动,如MySQL Connector/J,对性能至关重要。最佳实践包括事务管理、防SQL注入、优化索引和数据库设计。NoSQL数据库如MongoDB也日益重要,Java有对应的驱动支持。理解这些概念和技术是构建高效数据库应用的基础。
Java数据库编程指南:实现高效数据存储与访问
|
2月前
|
监控 Oracle 关系型数据库
Flink CDC(Change Data Capture)是一种用于捕获数据库变更的技术
Flink CDC(Change Data Capture)是一种用于捕获数据库变更的技术
36 8
|
2月前
|
存储 监控 安全
内网屏幕监控软件的数据存储与管理:使用SQLite数据库保存监控记录和配置信息
在当今数字化时代,安全和监控在企业和组织中变得至关重要。内网屏幕监控软件作为一种关键工具,帮助组织监视员工的活动并确保信息安全。这种软件不仅需要高效地记录和管理监控数据,还需要能够方便地进行配置和调整。本文将讨论如何使用SQLite数据库来保存监控记录和配置信息,并介绍如何通过自动化机制将监控到的数据提交到指定网站。
165 2
|
3月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
38 0
|
3月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
67 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
10天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
17天前
|
存储 关系型数据库 MySQL
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
|
30天前
|
SQL 关系型数据库 MySQL
Mysql数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中
Mysql数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中
10 0

热门文章

最新文章