1

我刚刚开始使用微软的数据访问应用程序块。关于正确使用该库的方法的说明很少。只是想知道这是否是使用数据阅读器的正确方法。

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块中,如果可以的话,我会避免使用列号,因为它们本质上会变成幻数。不幸的是,这只需要您使用列名,但我发现列名比列偏移量更不可能更改,并且您始终可以将列名放在配置文件或其他东西中。另外,请确保您考虑到空列的可能性

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 回答
0

看一下

企业图书馆数据访问应用程序块,第 2 部分

于 2010-04-06T17:01:51.887 回答