在设置多个值时使用sql reader检查空值

时间:2016-05-24 14:44:46

标签: sql

我有一个sql命令在我的数据库中拾取一行,但有时其中一个日期时间值可能为空。

示例:

var reader = command.ExecuteReader();
                if (reader.HasRows)
                {
                    List<AdmissionsVm> appDetailsOut = new List<AdmissionsVm>();
                    while (reader.Read())
                    {
                        appListOut.Add(new AdmissionsVm
                        {
                            Parish = Convert.ToString(reader.GetValue(40)),
                            CofE = Convert.ToBoolean(reader.GetValue(41)),
                            OtherFaith = Convert.ToString(reader.GetValue(42)),
                            PrefSiblingName1 = Convert.ToString(reader.GetValue(43)),
                            if (!reader.GetValue(44).IsDbNull){SiblingDateOfBirth = Convert.ToDateTime(reader.GetValue(44))}
                            SiblingGender = Convert.ToString(reader.GetValue(45))
                        });
                    }
                }

我实际上带回了很多细节但是当siblingdateofbirth为null时,我似乎无法检查它,因为我之后添加的字段出现错误

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

通常最好指定列名而不是列位置,因为如果查询由于某种原因更改了其返回列的顺序,则可能需要更改所有GetValue调用的参数。

要检查null尝试类似这样的事情

if (!reader.IsDBNull(reader.GetOrdinal("YourColumnNameForPosition44")))
          {SiblingDateOfBirth = Convert.ToDateTime(reader.GetString(reader.GetOrdinal("YourColumnAgain"))}