1

2 つのテーブルを返す単一のストアド プロシージャを作成しました。

select * 
from workers

select *
from orders

このストアド プロシージャを C# アプリケーションから呼び出してDataSet、2 つのテーブルを取得すると、すべて正常に動作します。

私の質問は、SQL Server 側でTables[0]テーブル名を変更して、C# 側で (の代わりに)名前を介してアクセスできるようにする方法です。

myDataSet.Tables["workers"]...

Googleで答えを探してみましたが、見つかりませんでした。検索キーワードが不十分だった可能性があります。

4

2 に答える 2

4

これらのテーブル名に影響を与えるために、サーバー側から実際に何もすることはできません。これらの名前は、クライアント側の ADO.NET コードにのみ存在します。

あなたができることはクライアント側にあります-テーブルマッピングを追加します-次のようなものです:

SqlDataAdapter dap = new SqlDataAdapter(YourSqlCommandHere);
dap.TableMappings.Add("Table", "workers");
dap.TableMappings.Add("Table1", "orders");

これにより、実際にデータを入力する前に、 Table(最初の結果セット)workersTable1(2 番目の結果セット) の名前が変更されます。ordersだから、への呼び出しの後

dap.Fill(myDataSet);

その後myDataSet.Tables["workers"]myDataSet.Tables["orders"]使用できるようになります。

于 2012-05-22T08:01:41.770 に答える
0

TDS プロトコルのドキュメント(SQL Server から結果を返すために使用されるプロトコル) では、「結果セット名」について言及されていません。したがって、ADO.net の結果セットにアクセスできる唯一の方法は、例で述べたように番号によるものです。

于 2012-05-22T08:01:20.683 に答える