如何使用DBNull.Value检查表列是否为null;如果不为null,则返回默认值

时间:2016-07-04 03:34:16

标签: mysql sql-server dbnull

我当前的while语句用于从表中获取所有值(两个整数和一个字符串值),它看起来像这样:

                    while (reader.Read())
                {
                    Int16 a = reader.GetInt16("id");
                    **int b = (reader["nullable_id"] != DBNull.Value) ? Convert.ToInt16(reader["nullable_id"]): 0;**
                    string c = reader.GetString("string");
                    Site page = new Site(a, b, c);
                    list.Add(page);
                }

我使用它做的是获取表中的所有值。它有一个主键,一个外键和一个常规字符串值(分别为a,b和c)。通过允许我拉取主值和字符串值而忽略当前具有空值的外键,这样可以正常工作。但是,如果我要将' null'中的一个外键值改为32,则在执行GET方法时该值不会返回。

所以我的问题是,如何检查外键是否为null然后,如果它不为null,则返回存储在数据库中的值,如果它为null,则它保留值为空?我使用DBNull比较新,所以我可能会错误地实现它。

1 个答案:

答案 0 :(得分:0)

简单的改变使用这个

   while (reader.Read())
                {
                    Int16 a = Convert.ToInt16(reader["id"]);

                    int b = (!string.IsNullOrEmpty(Convert.ToString(reader["nullable_id"]))) ? Convert.ToInt16(reader["nullable_id"]): 0;
                    string c = Convert.ToString(reader["string"]);
                    Site page = new Site(a, b, c);
                    list.Add(page);
                }