C# Alternative of Multiple Active Result Set for MS-Access

孤者浪人 提交于 2020-01-06 07:47:30

问题


I want to know if a multiple active result set, MARS, exists for the Microsoft's Access database? I am aware this exists for SQL Server. I tried using it with Access but it didn't work for me. I want to know how to use MARS with Access.


回答1:


In short, Microsoft Access does not support multiple active result sets (MARS). It is not supported by the ODBC provider and the reason why that is not the case should be obvious if you think about it in terms of what MARS actually offers you from a performance stand point.

If you think about the most important reason for MARS to exist is if you have stored procedures executed on a SQL server that produce multiple result sets. If you have such queries you need to be able to somehow access those multiple results sets.

But in Access there is no such thing as stored procedures. If you have multiple queries you can just execute each one of them separately and get the result set for each. Hence, no need for MARS.

NOTE

In light of the comments, here's an example of how to have two data readers open at the same time:

 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();
 }


来源:https://stackoverflow.com/questions/14484102/c-sharp-alternative-of-multiple-active-result-set-for-ms-access

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!