最新版本的DataRabbit(版本号:V3.2)新增一项重要功能--可以捕获访问数据库时产生的异常的详细信息,包括:异常对象、Sql语句、sql参数的名称和值。这是由IDBOperationLogger接口提供支持的。
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> ///<summary>
///IDBOperationLogger用于捕获住DB操作异常。可以用于记录DB操作失败时的语句和参数。
///</summary>
publicinterfaceIDBOperationLogger
{
voidLogException(Exceptionee,stringmethodName,stringcmdText,IDataParameterCollectionparameters);
}
当通过DataRabbit访问数据库时,所产生的任何异常,都会被IDBOperationLogger接口捕获住,你可以实现自己的Filter来对捕获的异常进行处理,比如,记录下执行失败的SQL语句和对应的参数值。
DataRabbit内部提供了IDBOperationLogger接口的两种实现:EmptyDBOperationLogger 和DBOperationLogger。EmptyDBOperationLogger 将忽略异常信息,而DBOperationLogger将会把异常的详细信息记录到日志文件。
比如,在数据库的Student表中插入一条记录时,产生主键冲突的异常,则DBOperationLogger会记录类似下面的的日志:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->2008/11/1911:49:20:高--违反了PRIMARYKEY约束'PK_Student'。不能在对象'dbo.Student'中插入重复键。语句已终止。错误类型:System.Data.SqlClient.SqlException。位置:
<dbCommand>
<method>ExcuteCommand</method>
<text>INSERTINTOStudent([AutoID],[Name],[Age],[Comment])VALUES(@AutoID,@Name,@Age,@Comment)</text>
<parameters>
<paraname="@AutoID"value="0"/>
<paraname="@Name"value="Sky"/>
<paraname="@Age"value="30"/>
<paraname="@Comment"value="NoComment"/>
</parameters>
</dbCommand>
日志中,<dbCommand>节点下的<text>子节点的内容就是执行失败的SQL语句,而<parameters>节点下的子节点则列出了所有的参数名称及其对应的值。
那么,如何注入IDBOperationLogger实例到DataRabbit框架中了?通过TransactionScopeFactory的DBOperationLogger属性。例如:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
DataConfigurationconfig=;
TransactionScopeFactorytransactionScopeFactory=newTransactionScopeFactory();
transactionScopeFactory.DataConfiguration=config;
transactionScopeFactory.DBOperationLogger=newDBOperationLogger("DBException.txt");
transactionScopeFactory.Initialize();
上述配置会将异常日志记录到当前目录下的DBException.txt 文件中。
如果不设置DBOperationLogger属性,则DataRabbit框架默认采用EmptyDBOperationLogger。
记录执行失败的SQL语句和对应的参数值,对于我们分析异常产生的原因是十分有用的,而DataRabbit可以自动为你记录了这些信息。
关于V3.2版本的DataRabbit 请到DataRabbit 轻量的ORM框架(00) -- 序 文末处下载,谢谢!
分享到:
相关推荐
EF-ORM是一个轻量,便捷的Java ORM框架。并且具备若干企业级的应用特性,如分库分表、JTA事务等。 代码生成插件for eclipse(请在eclipse中Help/Install new software后输入地址并安装)...
一个自建的Java应用开发ORM框架,名为Integ,有分页查询功能,有很好的灵活度和扩展性。此为第一期的代码,后续还会增强。欢迎下载,欢迎批评指正。
DoNet4.0 ORM框架NHibernate-4.1.1,注意。该版本编译环境为.net4.0
golang常用库:操作数据库的orm框架-gorm基本使用 一:字段映射-模型定义 gorm中通常用struct来映射字段. gorm教程中叫模型定义 比如我们定义一个模型Model: type User struct { gorm.Model UserId int64 `gorm:...
一款轻量级的ORM框架。
ORM框架可以化解SQL语句的复杂性,对数据库访问进行对象化,可以减少程序的代码量,并且能大大减少重复性代码学过.NET语言的同学都知道在.NET平台下基于LINQ的EntityFramework的ORM框架吧。在我们开发系统时,一般都有...
一个自建的Java应用开发ORM框架,名为Integ,有分页查询功能,有很好的灵活度和扩展性。此为第一期的代码,后续还会增强。欢迎下载,欢迎批评指正。(昨天上传的代码过期了,以这个版本为准)
VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序员开发量身定做的(ORM框架)代码生成工具,所生成的代码基于面向对象、分层架构设计、ORM并参考微软Petshop中的经典思想,...
比如,DataRabbit对你的数据库设计没有任何要求(而有的数据访问框架可能要求数据表必须有唯一主键)。 2. 约定优于配置。使用DataRabbit不需要任何配置,这使得DataRabbit更加易用。 3. 数据库类型无关性。统一的...
This project is based on Java, is a lightweight ORM model. Only concerned about the Object-Relationl Mapping, therefore more simple and easier to use, easier to control. Key support functions and ...
ORM框架-三层架构完整程序代码.pdf
主要介绍了Python轻量级ORM框架Peewee访问sqlite数据库的方法,结合实例形式较为详细的分析了ORM框架的概念、功能及peewee的安装、使用及操作sqlite数据库的方法,需要的朋友可以参考下
GreenDAO是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁;是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。
轻量级orm框架,灵活在于可以自己编写复杂的SQL语句查询,简单在于几分钟内便能上手使用,并支持mysql, mssql, oracle, sqlite数据库
Sqlite ORM 是一个简单的C#类,对Sqlite的操作进行了封装,主要功能包括:表定义、生成,访问,更新等,其中,支持,多表的连接操作,语法类似Linq语法,使用非常方便,附加了使用说明文档。 例如,添加记录操作为...
Ebean:开源ORM框架 Ebean是一个Java实现的开源ORM框架,具有数据访问快速和易于学习、使用等特点。
不用写sql啦,不用创建表啦,一个比mybatis更轻量级,比hibernate好用的orm!
Java反射机制在数据持久层轻量级ORM框架中的应用研究.pdf
ORM框架-三层架构 完整代码实现 通过解析实例,讲述ORM框架,采用三层架构实现功能。
ActiveAndroid算是一个轻量级的ORM框架,简单地通过如save()和delete()等方法来做到增删改查等操作。配置起来也还算简单。 示例代码: @Table(name = "Categories") public class Category extends Model { @...