2

JAVA では、結果セットの 1 行目を指すようにデータ リーダーを設定できると思います。20 を超える列を持つ SQLDataReader があり、結果セット全体を使用する前に、いくつかの列を前処理し、いくつかの値を計算する必要があります。選択した列だけを取得するために、初めてデータ リーダーを読み取った後にデータ リーダーを再読み取りすることは可能ですか? または、結果をデータ テーブルに保存し、後で読み取る必要がありますか?

4

3 に答える 3

4

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspxの MSDN ドキュメントから

SQL Server データベースから前方のみの行ストリームを読み取る方法を提供します。

一度に 1 行ずつ読むことはできますが、次の行を読んだら、その行に戻ることはできません。

行内の列を任意の順序で何度でも読み取ることができ、必要に応じてフィールドをスキップできます。

while (reader.Read())
{
    var a = reader[2];   // you can skip fields
    var b = reader[0];   // you don't have to read the fields in order
    var c = reader[2];   // you can re-read fields
}
于 2012-05-09T19:17:34.753 に答える
2

いいえ、できません。

SqlDataReaderMSDNから:

SQL Server データベースから前方のみの行ストリームを読み取る方法を提供します。

(私のものを強調)

必要なすべてのデータをコレクションに読み込んで、コピーを何度でも繰り返すことができます。

于 2012-05-09T19:17:36.517 に答える
1

おそらく、sprocの一部として2つのクエリを実行できます。最初のクエリは事前に計算されたフィールドのフィールドに制限され、2番目のクエリは残りのフィールドに制限されます。次に、C#でreader.ReadNextメソッドを使用します。

あるいは、SQLは計算フィールドをサポートしているため、作業が簡単になる可能性があります。

しかし、個人的には、データ全体を読み取ってList<T>処理します...

于 2012-05-09T19:37:02.490 に答える