.net - 当我使用没有 OleDBConnection 对象的 OleDbDataAdapter 对象时,为什么我的 .NET 2.0 应用程序在 .NET 4.0 下崩溃?

标签 .net excel .net-4.0 ado.net

这是一个使用 VS 2005 编写的 .NET 2.0 应用程序。它在运行 .NET 2.0 的系统上运行良好,但在运行 .NET 4.0 的系统上会严重崩溃。这是代码的关键部分:

      string selectCommand1 = ....
      string connectionString1 = ....
      using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand1, connectionString1))
        {
            try
            {
                adapter.Fill(table1);
            }
            catch
            {
               MessageBox.Show("error");
            }
        }

      string selectCommand2 = ....
      string connectionString2 = ....
      using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand2, connectionString2))
        {
            try
            {
                adapter.Fill(table2);
            }
            catch
            {
               MessageBox.Show("error");
            }
        }

同样,它在 .NET 2.0 下工作,在 .NET 4.0 下崩溃

ConnectionStrings 1 和 2 引用不同的 .xls 文件。

我发现解决这个问题的方法是声明并初始化 OleDbConnection 类型的字段变量,在 OleDbDataAdapter 的 using 语句之前设置 ConnectionString 属性并 Open() 它。就这样:

 OleDbConnection connection = new OleDbConnection();

  .......

        connection.ConnectionString = connectionString1;
        connection.Open();
        using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand1, connection))
        {
            try
            {
                adapter.Fill(table1);
            }
            catch
            {
                MessageBox.Show("error");
            }
        }

        connection.Close();
        connection.ConnectionString = connectionString2;
        connection.Open();
        using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand2, connection))
        {
            try
            {
                adapter.Fill(table2);
            }
            catch
            {
                MessageBox.Show("error");
            }
        }

很难相信这就是我的应用程序在 .NET 4.0 下严重崩溃(没有错误消息)的原因,但是在一次删除一行代码并一遍又一遍地重新编译后,我发现这就是原因的问题。

我很高兴解决了这个问题,但我对第一个代码无法在 .NET 4.0 上运行这一事实并不满意。

有人可以解释一下为什么 .NET 4.0 不喜欢使用上面这样的代码吗?

最佳答案

问题出在“应用程序验证程序”。卸载它解决了问题。

关于.net - 当我使用没有 OleDBConnection 对象的 OleDbDataAdapter 对象时,为什么我的 .NET 2.0 应用程序在 .NET 4.0 下崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11438952/

相关文章:

vba - 从 A 列复制范围并写入 B 列

c# - 过滤 DataGridView

c# - HttpWebResponse 上的奇怪对象处置异常

excel - 为什么 JExcel 在分配的货币符号 (£) 上强制使用单元格的正前缀 ($)?

c# - 如果您使用和/或 (||/&&),.net 会停止检查 IF 语句的其余部分吗?

excel - 在什么情况下我不能使用 SUMPRODUCT 代替 MMULT?

C# Lazy <T> & 竞速初始化?

asp.net - 使用 AJAX 进行 WCF 调用

c# - GraphQL .NET 上部分更新突变的空字段

c# - .Net IBM MQ 错误 "MQRCCF_CFIN_PARM_ID_ERROR"3014