.net - 如何在只执行一次命令时检查 DBNull?

标签 .net sql database ado.net

当我从数据库中检索任何标量值时,我通常会为可为空的字段编写这样的代码。

cmd.ExecuteScalar() == DBNull.Value ? 0 : (int)cmd.ExecuteScalar()

但我不喜欢它,因为它执行了两次 Executescalar 语句。对于我的网站来说,这是一次额外的服务器访问,为了提高性能我不想这样做。

有什么办法可以摆脱这个额外的 ExecuteScalar()?

最佳答案

自己写一个sql命令的扩展方法。

public static T ExecuteNullableScalar<T>(this SqlCommand cmd)
    where T : struct
{
    var result = cmd.ExecuteScalar();
    if (result == DBNull.Value) return default(T);
    return (T)result;
}

用法变为:

int value = cmd.ExecuteNullableScalar<int>();

关于.net - 如何在只执行一次命令时检查 DBNull?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/422932/

相关文章:

.net - 如何在Visual Studio 2008的WATCH列表中保存/打印值?

sql - OVER ORDER BY 中的多个列

ios - sql select 语句不起作用

mysql - 针对不同产品类型的数据库方法

ios - 仅将来自 NSDictionary 的更新数据解析为核心数据

c# - 如何在没有 NuGet 的情况下安装和设置 RESTSharp?

c# - 使用这个结构有什么问题吗?

.net - MVVM 没有意义吗?

sql - 甲骨文-ORA-06502 : PL/SQL: numeric or value error: number precision too large

java - Web 应用程序如何使用服务器发送的事件获取数据库更新并将更新传播到 Web 客户端?