如何使用 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);
}
我当前的 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);
}