1

ms access データベースから 1 回の ado.net 呼び出しで 3 つのテーブルをフェッチしたいのですが、そうしようとするとエラーが発生します。

SQLクエリを1つのテーブルだけをフェッチするように変更すると、コードは正常に動作します

msアクセスでこれを達成する方法を誰かに教えてもらえますか? 私は何年も問題なく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");
4

1 に答える 1

3

私の知る限り、データが Access mdb 内にある場合、複数のデータ セットを持つことはできません。代わりに Access を使用して外部データ ソースに接続する場合は、パススルー クエリを使用してそれを行うことができますが、これはあなたの場合ではないと思います。( http://support.microsoft.com/kb/126992を参照)

于 2009-04-07T15:19:13.843 に答える