JAVA では、結果セットの 1 行目を指すようにデータ リーダーを設定できると思います。20 を超える列を持つ SQLDataReader があり、結果セット全体を使用する前に、いくつかの列を前処理し、いくつかの値を計算する必要があります。選択した列だけを取得するために、初めてデータ リーダーを読み取った後にデータ リーダーを再読み取りすることは可能ですか? または、結果をデータ テーブルに保存し、後で読み取る必要がありますか?
3 に答える
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
}
いいえ、できません。
SqlDataReader
MSDNから:
SQL Server データベースから前方のみの行ストリームを読み取る方法を提供します。
(私のものを強調)
必要なすべてのデータをコレクションに読み込んで、コピーを何度でも繰り返すことができます。
おそらく、sprocの一部として2つのクエリを実行できます。最初のクエリは事前に計算されたフィールドのフィールドに制限され、2番目のクエリは残りのフィールドに制限されます。次に、C#でreader.ReadNext
メソッドを使用します。
あるいは、SQLは計算フィールドをサポートしているため、作業が簡単になる可能性があります。
しかし、個人的には、データ全体を読み取ってList<T>
処理します...