4

DataReaderの正しい使い方を知りたい。(C#およびAdvantageデータベース)

データベースにOrder、Item、Customerテーブルがあると仮定します。

そして、csファイルの各テーブルからデータを読み取る必要があります。

そこで、データベース接続を開き、DataReaderを使用してデータを読み取りました。

お気に入り、

AdsConnection conn = new AdsConnection("~~~~");
AdsCommand cmd;
AdsDataReader reader;

conn.open();
cmd = conn.CreateCommand();
cmd.CommandText = "Select * from order";
reader = cmd.ExecuteReader();

そして今、私は他の表を読む必要があります。しかし、接続とリーダーを閉じて、再接続して再定義する必要があると思います。

それで、私は他のリーダーを定義します。

conn.Close();
conn.Open();
AdsDataReader itemReader;
cmd.CommandText = " Select * from item";
itemReader = cmd.ExecuteReader();

.
.
reader.close();
itemReader.close();
conn.Close();

大丈夫ですか?このように使用しますか?誰もがより良い方法を知っています、私にアドバイスしてください〜

ありがとうございました!

4

3 に答える 3

4

ADO.NET 2.0では、MARS-複数のアクティブな結果セットと呼ばれる機能が導入されました。これにより、データベースに複数のクエリを送信し、1回の呼び出しでそれらを取得できます。

これは、MARSを使用するコードサンプルを含むMSDNの記事です。

http://msdn.microsoft.com/en-us/library/yf1a7f4f(v=vs.80).aspx

接続文字列は、MultipleActiveResultSetsプロパティをtrueに設定することに注意してください。

于 2012-04-11T16:11:28.673 に答える
2

(より適切な回答が削除されたため)

接続を開いたままにしておくこともできますが、適切な方法として、コマンドとリーダーをできるだけ早く閉じる必要があります。

using() { }最善の方法は、これらの各リソースをステートメントに入れることです。

たとえば、各クエリを別々のメソッドに入れることが可能または有益である場合は、接続ごとに別々の接続を使用します。データベースが接続プールをサポートしている限り、パフォーマンスが低下することはありません。

もう1つのポイント:

  • 使用しないSELECT *で、列を詳しく説明してください
于 2012-04-11T17:43:16.433 に答える
0

SQLHelperを学習または使用することをお勧めします

http://www.sharpdeveloper.net/source/SqlHelper-Source-Code-cs.html

于 2012-04-12T01:39:44.740 に答える