如何使用 DBNull.Value 检查 table 列是否为空; return 如果不为空则为默认值

How to use DBNull.Value to check if table column is null; return default value if not null

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

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

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

所以我的问题是,我如何检查外键是否为空,如果它不为空,它 return 是存储在数据库中的值,如果是null,那么它将值保留为 null?我对使用 DBNull 比较陌生,所以我可能实施不正确。

简单的改变使用这个

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