首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将数据从阅读器加载到对象中,哪种方法更好

将数据从阅读器加载到对象中,哪种方法更好
EN

Stack Overflow用户
提问于 2011-03-07 09:31:33
回答 3查看 46关注 0票数 0

看看下面的代码来加载一个列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while (dataReader.Read())
            {
                City city;
                if (City.TryLoad(dataReader, out city))
                {
                    defaultCities.Add(city);
                }
            }

TryLoad读取读取器并加载数据对象,成功时返回true,失败时返回false。我被告知,这样做的好处是,如果加载对象时由于某种原因导致代码失败,代码将不会抛出错误。因此,如果一行数据损坏,则不会将其添加到默认连接中。此外,在try load中,我们可以记录特定的行抛出和错误,并修复它。

另一方面,我之前遵循的方法只是加载对象并将它们添加到集合中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 while (dataReader.Read())
                {
                    City city = new City();
                    city.Name = reader["Name"].ToString();
                    .
                    .
                    defaultCities.Add(city)

                }

虽然第二种方法可能会因为数据库中的值损坏而失败,但您不希望发生这种情况吗?在第一种方法中,由于缺失值而捕获bug不会变得困难吗?

我只是想听听别人对这两种方法的利弊的看法。

此外,请帮助适当地标记问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-07 20:48:47

如果您可以允许在错误数据上抛出异常,那么第二种方法是最好的。这在管理员可以控制数据质量的情况下很常见。

然而,管理员通常不能保证数据的质量,这是事实。在这些情况下,通常要求应用程序优雅地处理格式错误的数据。当面对这种需求时,第一种方法是一种优雅的方法。

票数 1
EN

Stack Overflow用户

发布于 2011-03-07 09:35:33

你说得很对,如果数据有问题,我也想尽快知道。

我个人使用第二种方法,尽管我写了一个小应用程序来自动生成我的BLL。

票数 1
EN

Stack Overflow用户

发布于 2011-03-07 14:23:18

第二个。我喜欢它,因为它更干净,更容易维护。

您还可以将数据直接从数据读取器加载到变量中,并在加载到类中之前进行测试- DateTimes就是很好的例子,我建议对它们使用TryParse():

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DateTime contentLastModified;
if (!DateTime.TryParse(dr["LastModified"].ToString(), out contentLastModified))
{
  contentLastModified = MyApp.Common.Constants.SystemTypeValues.NullDate;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5217943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文