【问题标题】:return multiple result sets from ms access to ado.net从 ms 访问 ado.net 返回多个结果集
【发布时间】:2010-10-18 02:19:09
【问题描述】:

大家好,我想在 1 个 ado.net 调用中从我的 ms access 数据库中获取 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");

【问题讨论】:

  • 您能否添加您尝试运行的 SQL,或者编辑您的原始帖子以便我们可以看到其余的行?
  • @justin - sql 语句已经在上面的代码块中出现问题(在数据适配器构造函数中硬编码)
  • 我尝试用 GO 分隔语句,但也不起作用
  • 是的,看起来不可能——甚至谷歌搜索也表明了这一点。它的耻辱访问不支持此基本功能:-(
  • 很清楚为什么 Jet 不支持这样的功能,因为没有服务器端进程可以适当地序列化多个 SQL 语句。抱怨这个实际上是不了解您选择的工具的基础知识。

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


【解决方案1】:

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

【讨论】:

  • 是的,看起来你是对的......我会等几个小时看看是否有人有黑客;-) 谢谢你的帮助伙伴
  • @Raj:Jet 数据库引擎不支持单个命令文本中的多个命令。我不认为有围绕这个限制的破解。 :-)
  • @tomalak - 访问真的很糟糕!我将不得不搬到 sqlite ;-)
  • @Raj:Access 真的很糟糕,因为它没有为它做的事情。几乎所有东西都不适合它。 ;-)
猜你喜欢
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
相关资源
最近更新 更多