いつもお世話になってます。
10月からC#とSQLServerで検索や登録等のやり取りをする機会が出てきまして現在勉強しています。
C#
1 //select関数に下記情報を渡す。 2 //第一引数 string sql文 3 //第二引数 HashTable パラメータ 4 //第三引数 SqlConnection コネクション 5 public DataTable select(string sql, Hashtable prms = null, SqlConnection pconn = null) 6 { 7 SqlConnection objConn = pconn; 8 DataTable dataTable = null; 9 try 10 { 11 if (pconn == null) 12 { 13 /*** データベースに接続 ***/ 14 objConn = new SqlConnection(connection_str); 15 objConn.Open(); 16 } 17 18 //アダプタ作成 19 SqlDataAdapter daAuthors 20 = new SqlDataAdapter(); 21 22 daAuthors.SelectCommand = new SqlCommand(sql, objConn); 23 24 if (prms != null) 25 { 26 foreach (string key in prms.Keys) 27 { 28 //パラメータ格納 29 daAuthors.SelectCommand.Parameters.Add(new SqlParameter(key, prms[key])); 30 } 31 } 32 33 //データセット作成 34 DataSet dataSet = new DataSet(); 35 daAuthors.FillSchema(dataSet, SchemaType.Source, "DATA"); 36 37 //ここでエラーを吐く 38 daAuthors.Fill(dataSet, "DATA"); 39 40 //取得したデータを代入する。 41 dataTable = dataSet.Tables["DATA"]; 42 } 43 catch (Exception) 44 { 45 throw; 46 } 47 finally 48 { 49 if (pconn == null && objConn != null) 50 { 51 objConn.Close(); 52 } 53 } 54 return dataTable; 55 }
##問題点
上記コードで取得件数が1000件以上ある場合、2分以上経過したあたりからOutOfMemoryを吐き出してしまいます。
##知りたいこと
取得するデータ量が多く、メモリ不足を起こしてしまう場合
どのような対策を講じればよいのでしょうか?
コードよりも手法を知りたいです。
データベースはまだまだ勉強中の身ですので初歩的な質問かもしれませんがよろしくお願い致します!
不備等ありましたらご指摘の程お願い致します!

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/31 01:20 編集