1

Microsoft の Data Access Application Block を使い始めたところです。ライブラリを正しく使用するための指示はほとんどありません。これがデータ リーダーの正しい使用方法であるかどうかを知りたかっただけです。

SqlDataReader reader = SqlHelper.ExecuteReader(config.ConnectionString, CommandType.Text, "select * from category");
List<string> a = new List<string>();
using (reader)
{
     while (reader.Read())
     {
          string t = reader.GetString(1);
          a.Add(t);
     }

     return a;
}

この方法ですべてが閉じられますか?メモリリークの可能性はありますか?

4

2 に答える 2

2

リーダーの初期化をusingブロックに入れます。列番号は基本的に魔法の番号に変わるため、可能であれば列番号の使用は避けます。残念ながら、それには列名を使用する必要があるだけですが、列名は列オフセットよりも変更される可能性が低く、いつでも構成ファイルなどに列名を入れることができることがわかりました。また、null 列の可能性を考慮してください。

using(var reader = SqlHelper.ExecuteReader(etc. etc. etc.))
{
    while(reader.read()){
    {
        //Only need to do this if you don't want your string to be null
        //and if the "columnName" column is nullable.
        var stringValue = reader.IsDBNull(reader.GetOrdinal("columnName") 
                        ? "" 
                        : reader.GetString(reader.GetOrdinal("columnName"));
        a.Add(stringValue);
    }
}
于 2010-04-06T17:17:55.363 に答える