如何在Mysql Connector / NET中省略检查SqlNullValueException

时间:2011-01-26 01:48:14

标签: c# mysql null

从阅读器读取数据时,我必须检查数据库中允许空值的每个参数是否抛出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;
}

2 个答案:

答案 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)”,可用于检查空值。