database - 从 MS Access ado.net 返回多个结果集

标签 database ms-access ado.net dataset data-access

嘿伙计们,我想从我的 MS Access 数据库中通过 1 个 ado.net 调用获取 3 个表,但是当我尝试这样做时出现错误

当我将我的 sql 查询更改为只获取 1 个表时,我的代码工作正常

任何人都可以让我知道如何使用 ms access 实现这一点吗?因为我多年来一直在使用 sql server 这样做,没有任何问题。也许 Access 不支持多个结果集?我在 Access 方面的工作不多。请帮忙。以下是我的引用代码:

System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DatabaseFile.mdb;Persist Security Info=True");
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM Table1; SELECT * FROM Table2; SELECT * FROM Table3;", con);
DataSet ds = new DataSet();
da.Fill(ds);

更新:伙计们,这看起来不可能。所以我不得不编写非常愚蠢的代码来获得我想要的,完全浪费计算资源:

DataSet ds = new DataSet();

ds.Tables.Add(new DataTable("Table1"));
ds.Tables.Add(new DataTable("Table2"));
ds.Tables.Add(new DataTable("Table3"));

System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DatabaseFile.mdb;Persist Security Info=True");
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM Table1;", con);
da.Fill(ds, "Table1");

da.SelectCommand.CommandText = "SELECT * FROM Table2;";
da.Fill(ds, "Table2");

da.SelectCommand.CommandText = "SELECT * FROM Table3;";
da.Fill(ds, "Table3");

最佳答案

据我所知,如果您的数据驻留在 Access mdb 中,则您不能拥有多个数据集。相反,如果您使用 Access 连接到外部数据源,则可以使用传递查询并执行此操作,但我认为这不是您的情况。 (参见 http://support.microsoft.com/kb/126992)

关于database - 从 MS Access ado.net 返回多个结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/726263/

相关文章:

database - Delphi中保存数据最好的方法是什么

c# - 如何通过它的属性读取单个 XML 节点?

mysql - 如何使用 .findAll 并从两个不同的表和一个自引用中查找记录?

ms-access - 从 Access 2000/2003 迁移到 Access 2010

java - 无法插入 MS Access 数据库

php - 将 MS ACCESS 数据库导入 mySql?

c# - 如何为 System.Windows.Forms.DataVisualization.Charting 在 X 轴上设置日期时间范围?

sql - 下一代数据库

c# - Entity Framework 代码一级关系

.net - 在没有安装officebeeing的情况下读取excel文件