繁体   English   中英

处理DBnull执行的最佳方法是什么? [重复]

[英]What is the best way to handle a DBnull execption? [duplicate]

这个问题已经在这里有了答案:

我有一些返回DBnull的项目从数据库中抛出异常。 处理异常的最佳方法是什么? 更具体地说,适用于Daily和EndDate。 Daily是sql中的一位数据类型,EndDate是DateTime。 这是我当前实现的代码的方式。

while (reader.Read())
                {
                    sessionInfo.ID = sessionId;
                    sessionInfo.Name = Convert.ToString(reader["Name"]);
                    sessionInfo.GroupID = Convert.ToString(reader["GroupId"]);
                    sessionInfo.Disabled = Convert.ToBoolean(reader["IsDisabled"]);
                    sessionInfo.IsTestSession = Convert.ToBoolean(reader["IsTestSession"]);
                    sessionInfo.NextTrigger = reader["NextExecutionTime"] == DBNull.Value ? null : (DateTime?)reader["NextExecutionTime"];
                    sessionInfo.Type = Convert.ToString(reader["SType"]);
                    sessionInfo.POKeepDays = Convert.ToInt32(reader["DaysToKeep"]);
                    sessionInfo.When = new SchedulerInfo()
                    {
                        ID = sessionId,
                        SessionID = sessionId,
                        //TODO Recurrence = 
                        //TODO MultiTriggerTimes
                        //TODO MultiTriggerColl                          
                        MinuteFreq = Convert.ToString(reader["MinuteFreq"]),
                        HourFreq = Convert.ToString(reader["HourFreq"]),
                        Daily = reader.GetBoolean(reader.GetOrdinal("Daily")),
                        WeekFreq = Convert.ToString(reader["WeekFreq"]),
                        StartDate = Convert.ToDateTime(reader["StartDate"]),
                        EndDate = Convert.ToDateTime(reader["EndDate"]),
                        NoOrderDays = Convert.ToString(reader["NoOrderDays"]),
                        OrderDays = Convert.ToString(reader["OrderDays"]),
                        SelectedHolidays = Convert.ToString(reader["NoOrderHoliday"]),
                        SelectedOrderHolidays = Convert.ToString(reader["HolidayName"]),

我希望学习如何最好地处理为BdNull值引发的异常

  • 避免使用Convert.ToFoo ,而直接在DataReader上使用GetFoo方法。
  • 如果首先使用DataReader.IsDBNull()那么首先不会获得与DBNull相关的异常。

像这样:

while (reader.Read())
{
    sessionInfo.ID = sessionId;
    sessionInfo.Name = reader.IsDBNull( "Name" ) ? null : reader.GetString( "Name" );
    sessionInfo.GroupId = reader.IsDBNull( "GroupId" ) ? null : reader.GetString( "GroupId" );
    sessionInfo.Disabled = reader.IsDBNull( "Disabled" ) ? false : reader.GetBoolean( "Disabled" );
    // etc...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM