【问题标题】:C#: Is this the correct way to use the SqlDataReader for DAABC#:这是为 DAAB 使用 SqlDataReader 的正确方法吗
【发布时间】:2011-02-04 21:54:05
【问题描述】:

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

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;
}

这样做会关闭一切吗?有内存泄漏的可能性吗?

【问题讨论】:

  • CodePlex 上的最新版本 (v6) 现在有一些写得很好的文档、解释和示例代码。请参阅entlib.codeplex.com/releases,尤其是“Microsoft Enterprise Library 开发人员指南”,它可以以 pdf 格式下载,并很好地解释了 DAAB 的使用和基本原理。

标签: c# sqldatareader daab


【解决方案1】:

将您的阅读器初始化放入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);
    }
}

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2012-05-11
    • 2018-12-31
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多