从阅读器读取数据时,我必须检查数据库中允许空值的每个参数是否抛出NullValueException。特别是我必须使用单独的 try / catch 检查每个值,因为我仍然想要解析下一个值,第一个值为null。在C#中,一些类有一个tryParse(key,out value)函数,它在成功时返回一个布尔值,但我没有找到它用于Connector / NET。有没有办法缩短以下陈述?
Product product;
try {
product = new Product(
reader.GetString("product_id"),
reader.GetDateTime("starttime")
);
try {
product.EndTime = reader.GetDateTime("endtime");
} catch (System.Data.SqlTypes.SqlNullValueException) { }
try {
product.Description = reader.GetString("description");
} catch (System.Data.SqlTypes.SqlNullValueException) { }
try {
product.Type = reader.GetString("type");
} catch (System.Data.SqlTypes.SqlNullValueException) { }
} catch (MySqlException ex) {
throw ex;
} catch (Exception ex) {
throw ex;
}
答案 0 :(得分:3)
我通常将此模式与SqlDataReader一起使用,我想它应该与MySQL Connector / Net相同。
product.EndTime = reader["endtime"] as DateTime? ?? DateTime.MinValue;
product.Description = reader["description"] as string;
product.Type = reader["type"] as string;
答案 1 :(得分:3)
MySqlDataReader有一个方法“IsDBNull(int i)”,可用于检查空值。