从ms访问ado.net返回多个结果集

时间:2009-04-07 15:13:01

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

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

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

任何人都可以通过ms访问让我知道如何实现这一目标吗?因为我一直在用sql server这样做,因为年龄没有任何问题。也许访问不支持多个结果集?我没有多少访问权限。请帮忙。以下是我的参考代码:

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");

1 个答案:

答案 0 :(得分:3)

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