0

さて、私は何かいいことをしようとしています(私にとってはいいことですが、皆さんにとっては簡単です)、私はそれができると言われましたが、どこから始めればよいのかわかりません。1つのページに2つのDDLがあり、両方をポピュレートするためにpage_loadで必要です。それぞれが、それらの間に関係のない異なるテーブル(サプライヤー/カテゴリー)からデータを取得します。私は2つのDB接続でそれを行う方法を知っています。それは簡単ですが、1つの接続でそれを行うことができると言われました。統合されているのは接続だけなのか、SPが1つのSPで両方のテーブルを処理するのかはわかりませんでした(1つのSPだけでそれを実行できることは論理的ではないようです...しかし、私は何を知っていますか? .lol)ありがとう、Erez

4

3 に答える 3

1

SPで両方のクエリを実行できます。

your_sp

  select * from table1;
  select * from table2;

次に、C#側でデータリーダーを開き、reader.NextResult()メソッドを使用して、結果セット内の次の結果に移動できます。

while (reader.Read())                                              
{                                                                  
   // process results from first query                             
}                                                                  

reader.NextResult();                                               
while (reader.Read())                                              
{                                                                  
   // process results from second query                            
}                                                                  
于 2009-11-20T13:27:28.160 に答える
0

私が行う方法とは異なります(2つのオブジェクトデータソースを使用します)。ただし、実際に1のみを使用する場合は、次のようにします。

2つのselectステートメントを含む1つのSQLステートメントを作成します。それをC#データセットにロードします。
最初のddlをDataSet.Tables[0]にバインドします。
2番目のddlをDataSet.Tables[1]にバインドします。

いこうぜ。1つの接続。

編集:本当にDataReaderを使用したい場合...

おそらく、挿入するDDLを区別するための追加フィールドを含む2つのSELECTステートメントが必要になります。それで; このようなもの:

SELECT'Table1' AS TableName、Name、Value FROM dbo.Table1

連合

SELECT'Table2' AS TableName、Name、Value FROM dbo.Table2

次に、アイテムをDDLにロードするために使用している方法に関係なく、テーブル名をチェックして、どのメソッドに追加するかを確認します。

于 2009-11-20T13:21:32.007 に答える
0

SQLステートメントをセミコロンで区切ることができると思います。
例えばSELECT myColumns FROM Suppliers; SELECT otherColumns FROM Categories

通常の方法でデータリーダーを開くことができます。

1番目の結果セットのすべてのデータの読み取りが完了したら、呼び出しをNextResult行って次のステートメントの実行を試み、2番目の結果セットのリーダーを取得できます。

注:私はこれを行っていません。しかし、これは私がドキュメントから作成できるものです。

于 2009-11-20T13:27:53.840 に答える