用于 MS-Access 的多个活动结果集的 C# 替代项
本文关键字:活动 MS-Access 用于 结果 | 更新日期: 2023-09-27 17:55:36
我想知道Microsoft的 Access 数据库是否存在多活动结果集 MARS?我知道这存在于SQL Server中。我尝试将其与 Access 一起使用,但它对我不起作用。我想知道如何将 MARS 与 Access 结合使用。
简而言之,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();
}