使用MS Enterprise Library的DAAB获取数据时抛出异常

开门见山,使用MS Enterprise Library的DAAB(Data Access Application Block)获取 数据时抛出异常。具体场景如下,通过Database对象的ExecuteReader执行两段Select语句, 前一句是不合法的,后一句是正确的。为了避免第一次执行出错导致程序的终止,特意将其 放到Try/Catch酷快中。两次数据库操作通过TrsanctionScope的形式纳入同一个Transaction 中,具体的代码如下所示。 

class Program
{
    static void Main()
    {

        string invalidSql = "SELECT * FROM {InvalidTable}";
        string validSql = "SELECT * FROM {ValidTable}";

        Database db = DatabaseFactory.CreateDatabase();
        using (TransactionScope scope = new TransactionScope())
        {
            DbCommand commandWithInvalidSql = db.GetSqlStringCommand (invalidSql);
            DbCommand commandWithValidSql = db.GetSqlStringCommand (validSql);

            try
            {
                db.ExecuteReader(commandWithInvalidSql);
            }
            catch
            { }

            db.ExecuteReader(commandWithValidSql);
        }
    }
}

但是在执行第二个ExecuteReader方法的时候却抛出如下一个InvalidOperationException (如下图),错误消息为:“ExecuteReader requires an open and available Connection. The connection's current state is closed.” 

时间: 2024-11-03 17:26:08

使用MS Enterprise Library的DAAB获取数据时抛出异常的相关文章

WCF后续之旅(8):通过WCF Extension 实现与MS Enterprise Library Policy Injection Application Block 的集成

在上一篇文章中,我们通过自定义InstanceProvider实现了WCF和微软Enterprise Library Unity Application Block的集成, 今天我们已相同的方式实现WCF与Enterprise Library的另一个Application Block的集成:Policy Injection Application Block (PIAB). PIAB,通过Method Interception的机制实现了AOP(Aspect Oriented Programin

解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)

本篇文章是对php中使用异步调用获取数据时出现(由于出现错误c00ce56e而导致此项操作无法完成)的解决方法进行了详细的分析介绍,需要的朋友参考下   [详细错误]:由于出现错误 c00ce56e 而导致此项操作无法完成 [造成原因]:未指定输出编码格式. [解决办法]:句首加入header("content-type:text/html; charset=UTF-8");  

java获取数据时重复

问题描述 有一个对象User(对应数据库中t_user表),User有一个字段code.现在有一个方法edit(),edit方法每次通过User的code值来生成新的code值,就是说,如果现在数据库中code的最大值为10,那么edit方法新增一个User对象,这个User对象的code值为11,然后将新的User对象保存.现在的问题是如果多个用户同时执行到edit方法,会导致User记录的code 值重复,应该怎么解决??(获取code的最新值有一个特定方法:getNextCode) 解决方

Enterprise Library深入解析与灵活应用(6):自己动手创建迷你版AOP框架

基于Enterprise Library PIAB的AOP框架已经在公司项目开发中得到广泛的使用,但是最近同事维护一个老的项目,使用到了Enterprise Library 2,所以PIAB是在Enterprise Library 3.0中推出的,所以不同直接使用.为了解决这个问题,我写了一个通过方法劫持(Method Interception)的原理,写了一个简易版的AOP框架.(如果对PIAB不是很了解的读者,可以参阅我的文章MS Enterprise Library Policy Inje

WCF后续之旅(7):通过WCF Extension实现和Enterprise Library Unity Container的集成

松耦合.高内聚是我们进行设计的永恒的目标,如何实现这样的目标呢?我们有很多实现的方式和方法,不管这些方式和方法在表现形式上有什么不同,他们的思想都可以表示为:根据稳定性进行关注点的分离或者分解,交互双方依赖于一个稳定的契约,而降低对对方非稳定性因素的依赖.从抽象和稳定性的关系来讲,抽象的程度和稳定程度成正相关关系.由此才有了我们面向抽象编程的说法,所以"只有依赖于不变,才能应万变". 然后,对于面向对象的思想来讲,我们的功能通过一个个具体的对象来承载.对象是具体的,不是抽象的:创建对象

jquery ajax-jQuery ajax获取数据问题

问题描述 jQuery ajax获取数据问题 程序片段如下: var data_1; $.post("getdata.php",function(string_1){ data_1 = string_1; });为什么string_1的内容无法被获取呢?_ 要想获取其内容,应该如何做呢?麻烦指点下! getdata.php: <?php_ $con = mysql_connect('localhost','root'); mysql_select_db('my_db',$con)

安卓开发获取数据的url

问题描述 安卓开发获取数据的url 请问各位安卓开发 从网上获取数据时 怎么知道url 比如我想开发一个健康食谱 怎么知道他的url借口是多少啊 小白求助 解决方案 Java URL获取数据的方式java 访问url获取数据并解析 解决方案二: 那你得去找市面上有没有开放出来的接口.或者你有这么厉害去反编译相应的APP也能拿到接口

从excel表中获取数据

问题描述 我想问问,通过vb.net从excel表获取数据时,其中excel表中有空值,而vb通过excel.rang().value获取值时显示未将对象实例引用,而excel中必须有空值,怎么解决 解决方案 解决方案二:路过帮顶=============11月6日,论坛升级公告,积分已经做了调整!http://topic.csdn.net/u/20081107/11/b27dc75f-14b1-4594-9de3-5b18d9e36a11.html此次调整增加了两个新的可用分获取渠道:1:帖子

node.js下IE中获取数据的缓存

IE下默认会开启缓存策略,不管是页面还是通过ajax请求的数据都会议一个url,url是uri(统一资源定位符)的实例,url就是资源的标识符. 写一个demo进行验证,测试环境:IE8,node.js 0.12.7,页面模板为jade.  页面代码:testCache.jade 页面上放一个按钮,点下后从后台获取一个自增的数值显示在按钮上. doctype htmlhtml    head        meta(charset='utf-8')        title= title