0

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

4

1 回答 1

1

简而言之,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();
 }
于 2013-01-23T16:20:00.227 回答