C#
定石2: DataAdapterの最小コード— DataTableバルクロード
出典: C# DataReader vs DataAdapter — メモリ消費と性能の使い分け(業務SE 判断軸) — 定石2: DataAdapterの最小コード— DataTableバルクロード
// ✅定石2: SqlDataAdapterでDataTableにバルクロード
DataTable dt = new DataTable();
using (var conn = new SqlConnection(connStr))
using (var adapter = new SqlDataAdapter("SELECT id, name, amount FROM order_log WHERE status = @s", conn))
{
adapter.SelectCommand.Parameters.AddWithValue("@s", "active");
adapter.Fill(dt); //全行をDataTableにロード、内部でOpen/Closeされる
}
//この時点でConnectionは閉じている、後段でDataTableを画面に流す
dataGridView1.DataSource = dt;
//行ごとの編集・追加が可能
foreach (DataRow row in dt.Rows)
{
if ((decimal)row["amount"] > 1_000_000m)
{
row["status"] = "high"; //メモリ上で編集
}
}
//編集をDBに反映するなら別途SqlCommandBuilder + adapter.Update(dt)
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「定石2: DataAdapterの最小コード— DataTableバルクロード」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
4 件// ✅定石1: SqlDataReaderでストリーム読み取り using (var conn = new SqlConnection(connStr)) using (var cmd = new SqlCommand("SELECT id, name, amount FROM order_log WHERE status = @s", conn)) {未収録
定石1: DataReaderの最小コード—ストリーム読み取り
#1804e9186ec0
// ✅定石3:メモリ・実行時間の実測比較 const string sql = "SELECT id, name, memo, amount, created_at FROM big_log"; // --- DataAdapter版---
▶ 実行可
定石3:メモリ消費の実測比較— Stopwatch + GC.GetTotalMemory
#8e4ad96d6711
// ❌ NG: DataReader.GetInt32()にNULLが来ると例外 int id = reader.GetInt32(0); // NULL行でSqlNullValueException // ✅ OK: DataReaderはIsDBNullで先にチェック未収録
定石4: NULL値ハンドリングの違い
#a39fc22a5b9a
// ✅定石4-b: DataReader用NULL安全ヘルパー public static class ReaderEx { public static int? GetIntOrNull(this SqlDataReader r, int i)未収録
定石4: NULL値ハンドリングの違い
#e782c17c1e04
