用于 MS-Access 的多个活动结果集的 C# 替代项

本文关键字:活动 MS-Access 用于 结果 | 更新日期: 2023-09-27 17:55:36

我想知道Microsoft的 Access 数据库是否存在多活动结果集 MARS?我知道这存在于SQL Server中。我尝试将其与 Access 一起使用,但它对我不起作用。我想知道如何将 MARS 与 Access 结合使用。

用于 MS-Access 的多个活动结果集的 C# 替代项

简而言之,Microsoft Access 不支持多个活动结果集 (MARS)。ODBC 提供程序不支持它,如果您从性能角度考虑 MARS 实际为您提供的内容,则不是这种情况的原因应该是显而易见的。

如果您考虑 MARS 存在的最重要原因是,您是否在生成多个结果集的 SQL 服务器上执行了存储过程。如果您有此类查询,则需要能够以某种方式访问这些多个结果集。

但在 Access 中,没有存储过程这样的东西。如果您有多个查询,则可以分别执行每个查询并获取每个查询的结果集。因此,不需要火星。

注意

根据注释,下面是如何同时打开两个数据读取器的示例:

 using(var connection1 = new OdbcConnection("your connection string here"))
 {
   connection1.Open();
   using(var connection2 = new OdbcConnection("your connection string here"))
   {
     connection2.Open();
     using(var cmd1 = connection1.CreateCommand())
     {
       cmd1.CommandText = "YOU FIRST QUERY HERE";
       using(var dataReader1 = cmd1.ExecuteReader())
       {
          while(dataReader1.Read())
          {
             // keep reading data from dataReader1 / connection 1
             //  .. at some point you may need to execute a second query
             using(var cmd2 = connection2.CreateCommand())
             {
                cmd2.CommandText = "YOUR SECOND QUERY HERE";
                // you can now execute the second query here
                using(var dataReader2 = cmd2.ExecuteReader())
                {
                   while(dataReader2.Read())
                   {
                   }
                }
             }
          } 
       }
     }
     connection2.Close();
   }
   connection1.Close();
 }