private OleDbCommand GetCommand(string ConnStr,string SQL,params OleDbParameter[] Parameter)
        {
             conn = new OleDbConnection(ConnStr);
            
                OleDbCommand cmd = new OleDbCommand(SQL,conn);
                if (Parameter != null)
                {
                    Parameter.Where(w => { cmd.Parameters.Add(w); return true; }).ToArray();
                }
                try
                {
                    CloseConn();//判断数据库连接状态,如果是打开的话那么先关闭
                    conn.Open();
                    return cmd; 
                }
                catch (Exception ex)
                {
                    throw;
                }
            
        }代码不多,就这么点  这段代码神奇之处在于   如果我断点在conn.Open(); 这句停顿1秒中的话  那么代码完全正常没有任何错误 。但是如果不停顿1秒的话,则会报错错误是:“System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常。而且这段代码如果在独立的demo中运行的时候,完全正常,不会出错   除此之外,我现在本身的运行环境  是一个winFrom程序  我在程序里面添加了一个App.Config的配置文件   我现在初步估计错误原因跟这个App.Congig有关   不过还没找到原因还有各附带问题:右击项目解决方案 =>属性 里面的目标平台  我从x86改成了Any Cpu  现在在改回x86的时候项目无法运行...哪位接触过这一方面的,麻烦解释下这个目标平台是干什么的, 这样改了有没啥影响   我的系统是32位win7

解决方案 »

  1.   

    目标平台就是你项目生成的EXE或是DLL支持什么样的操作系统(32或是64)。
    至于你说的设断点出现的你认为奇怪的问题,建议你重建个测试项目再试一下。应该不存在。
      

  2.   

    就这么点 这段代码神奇之处在于 如果我断点在conn.Open(); 这句停顿1秒中的话 那么代码完全正常没有任何错误 。但是如果不停顿1秒的话,则会报错==>
    这个问题应该是不存在的,
    应该是其它问题引用的,
    好好查找下
      

  3.   

    我建立过其他项目Demo,调用一切正常,但是在我程序里面就不正常,所以我才说这个比较奇怪
      

  4.   

    http://blog.csdn.net/yanleigis/article/details/1913941
    http://zhidao.baidu.com/question/235878960.html&__bd_tkn__=7bac4b36323cd131475ca260a2a263af8d268de38078338d51fed8133ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb60157a5ff83a9a6fa0fe5e0f03de0125277fdc41ca0f48059b71712abffed63f470b7c2e345fc9630d474fc1a9aaeb7bf8accbdc8c0bcd3427fe4ea8
      

  5.   

    http://hi.baidu.com/elaintetz/item/20043e579b571e9009be17a9可能是配置文件问题,你发一下你的配置文件内容,让大家看看。
      

  6.   


    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
        <!--如果需要调用对方的webservice请在此处配置-->
        <add  key="webServiceAddress"  value="2222"/>
      </appSettings>
      <connectionStrings>
        <!--需要导出的数据库连接信息-->
        <add name="StartDB" connectionString="PROVIDER=SQLOLEDB;Data Source="/>
        <!--需要导入的数据库连接信息-->
        <add name="EndDB" connectionString="PROVIDER=SQLOLEDB;Data Source="/>
      </connectionStrings>
      <SQL>
        <!--数据获取-->
        <!--Params参数,SQL语句的参数 格式为 字段名+字段类型  多个参数使用 |  分隔-->
        <StartDBSQL>
          <SQL Params="Tset3+2|Tset2+2">SELECT Test,Test2,Tset3 FROM Table_1 WHERE Tset3=?</SQL>
        </StartDBSQL>
        <!--数据插入-->
        <EndDBSQL>
          <SQL Params="Test+?|Test2+?|Tset3+?">INSERT INTO Table_1(Test,Test2,Tset3) VALUES(?,?,?)</SQL>
        </EndDBSQL>
      </SQL>
    </configuration>  
      

  7.   

    CloseConn();//判断数据库连接状态,如果是打开的话那么先关闭你把这句注释掉之后再试试.
      

  8.   

    CloseConn();//判断数据库连接状态,如果是打开的话那么先关闭
    可能跟垃圾回收机制有关,关闭后资源没有回收?
      

  9.   

    如果是这样,没理由在我的demo里面完全真正常啊
      

  10.   

    原因基本上就是你的demo 只执行一条语句是好使的。而实际上你的项目中业务应该是同时执行了好多条语句,所以不好使。使用了对象(connection)互斥的代码
      

  11.   

    这个是因为你的连接正在关闭,你又去Open肯定有问题撒
    你得先等它关闭后再打开
      

  12.   

    应该是你有其他的SQL语句错误导致的,我以前好像遇到过类似的问题。你检查下你的sql语句。
      

  13.   

    应该不是你说的问题,open前面一句那个判断关闭的语句,是程序报错后才加上的就是说报错跟那个判断打开的方法没关系
      

  14.   


    我这里面目前1条SQL语句哦而且我试过将该语句硬编码到代码里去调用也不行,我估计是环境的问题
      

  15.   

    该不会是共享Connection对象吧,这样做是不提倡的,会出很多问题的
      

  16.   

    做。net里面的 Nhibernate 的时候 碰见过一次这样的情况,当时是数据错误,直接报错,但是打个断点就Ok了,那个好像是Nhibernate的惰性加载的东西。。不太懂,  跟这个好像不太一样......
      

  17.   

    你代码写的有 问题, 你 ADO.NET 的操作顺序 搞反了
      

  18.   

    先开 Open 后 Command 
      

  19.   

    你先 Command 后 Open() 你开的 OPEN 已经没有意义了
      

  20.   

    你的try方式不对,其实跳到后面去了
      

  21.   


    别共享,直接用了,用完丢,就好了,Connection最晚开,最早断,
    直接用Using包起来。
      

  22.   

    代码本身就有问题; conn = new OleDbConnection(ConnStr); //此处已重新实例了
    CloseConn();// 判断数据库连接状态,如果是打开的话那么先关闭                   //则会被关闭
     conn.Open();  //再打开肯定会出异常,至于1秒问题可能是,又从连接池中获取,NET的DB关闭并不是真的直接与数据库断开,只是放回连接池,由连接池维护,具体可以参考相关文档.你改为如下试试:
    if(conn !=null)
    {
      CloseConn();// 判断数据库连接状态,如果是打开的话那么先关闭
    }  
    conn = new OleDbConnection(ConnStr);
    conn.Open();
      

  23.   

    即:  private OleDbCommand GetCommand(string ConnStr,string SQL,params OleDbParameter[] Parameter)
            {
                 if(conn != null)
                   {
                       CloseConn();//判断数据库连接状态,如果是打开的话那么先关闭
                    }
                   conn = new OleDbConnection(ConnStr);
                    try
                    {
                        conn.Open();
                        OleDbCommand cmd = new OleDbCommand(SQL,conn);
                       if (Parameter != null)
                       {
                          Parameter.Where(w => { cmd.Parameters.Add(w); return true; }).ToArray();
                       }
                       return cmd; 
                    }
                    catch (Exception ex)  //还有此处,就是多余的,如果直接throw; 不需要加了,除非有自定义异常,
                    {
                        throw;
                    }
                
            }
      

  24.   


    这个没关系的,先指定Command的条件在打开没问题的,这不存在什么先后的顺序,你只要保证在数据库操作在打开后能够获取数据即可
      

  25.   

    “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异
    “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异
     
     
    由于配置文件加入自定义标签引起改问题!~
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <Columns>
        <filepath>D:\small03.xls</filepath>
        <!--文件路径-->
        <sheet>Sheet1</sheet>
        <!--表名称-->
        <filter>还款日期</filter>
        <!--到期日期表头名称(这个名称不能错!根据这个筛选数据 )-->
        <title>编号</title>
        <title>姓名</title>
        <title>年龄</title>
        <title>借款金额</title>
        <title>还款日期</title>
      </Columns>
    </configuration>
    解决方法
    app.config加入以下代码:
     <configSections> <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > <section name="ConvertData.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> </sectionGroup> </configSections>
      

  26.   

    这个方法你试过没...我上次在网上找了一个类似的,不过不行,这个我抽空试下,不过还是谢谢了,我也一直怀疑使这个config的问题  
      

  27.   

    .NET 版本冲突吧。 我用的2.0把3.5给删除了就好了。 因为原来编译好的程序也报错那就不对了,所以肯定是运行环境出问题了。