从数据库处理null

时间:2011-03-30 12:22:36

标签: .net vb.net null sqldatareader

我需要舍入并打印如下价格,但这不会处理空值 如何在一行代码上处理空值?
DBRSet是一个 SQLDataReader ,价格是SQL中的 money 类型。

<%= Math.Round(DBRSet("price"))%>

我有大约200个.aspx页面,所以我也可以使用一些提示,如何以一种简单的方式更改这些?我可以搜索并替换reg-exp或类似的内容吗?

2 个答案:

答案 0 :(得分:2)

您必须明确处理DbNull案例,例如:

<%= DbNull.Equals(DBRSet["price"]) ? "null" : Math.Round(DBRSet["price"]).ToString() %>

这很笨重,所以在某个地方有一个这样的辅助方法是有道理的:

static class FormatDbValue {
    public static string Money(object value)
    {
        if (DbNull.Equals(value)) {
             return "0";
        }

        return Math.Round((decimal)value);
    }
}

哪会允许

<%= FormatDbValue.Money(DBRSet["price"]) %>

当然,查找和更改所有此类代码以使用帮助程序方法将是......令人不快的。我会通过搜索整个项目(可能在项目的较小块中)来搜索指示(可能是Math.Round?)并在替换之前手动查看。

答案 1 :(得分:0)

如果您不想更改aspx,但可以轻松更改DBRSet属性的定义,可以在SqlDataReader上放置一个包装器并实现自己的索引器检查null并进入内部dataReader以获取值,如果不为null。