вернуть несколько результирующих наборов из ms доступа к ado.net - PullRequest
1 голос
/ 07 апреля 2009

эй, ребята, я хочу получить 3 таблицы в одном вызове ado.net из моей базы данных ms access, однако при попытке сделать это я получаю сообщение об ошибке

когда я изменяю свой sql-запрос на получение только 1 таблицы, мой код работает нормально

Может кто-нибудь дать мне знать, как добиться этого с помощью MS Access? потому что я делал это с сервером SQL с возрастов без каких-либо проблем. возможно, доступ не поддерживает несколько наборов результатов? я не много работал с доступом. пожалуйста помоги. ниже мой код для справки:

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 Ответ

3 голосов
/ 07 апреля 2009

Насколько я знаю, если ваши данные находятся в Access mdb, вы не можете иметь несколько наборов данных. Если вместо этого вы используете Access для подключения к внешнему источнику данных, вы можете использовать сквозные запросы и делать это, но я не думаю, что это ваш случай. (см. http://support.microsoft.com/kb/126992)

...