c# - 数据表计算时,对象不能从 DBNull 转换为其他类型
问题描述
我想对包含过滤器的数据表列求和。我正在使用以下代码:
object sumTotal;
sumTotal = dt.Compute("Sum(Total)", "[emp Id]=5");
但是我的数据库中没有empId
值5
,所以dt.compute()
不工作。它显示一个错误:
错误消息:无法将对象从 DBNull 转换为其他类型。
是否有任何方法如果在我的数据库中找不到 of ,那么它给出的结果是empId
,否则是总和?5
0
解决方案
对 DataTable.Compute 的简单调用不会给出该错误。如果没有值为 5 的 EmpID,则该调用的返回值为 DbNull.Value。
当然,此时,如果您尝试将结果转换为其他类型或强制转换,那么您可能会收到该错误消息。
您可以避免对返回值添加检查时出现问题
// Example for an int value returned by Compute
object sumTotal= dt.Compute("Sum(Total)", "[Emp ID] = 5");
int total = (sumTotal == DBNull.Value ? 0 : (int)result);
Console.WriteLine(total);
推荐阅读
- firebase - 将 REST API 用于 id 令牌时对 Firebase 存储进行身份验证
- java - 在 Java 的终端中显示西装符号
- php - 如何在 SQL 中查询离点最近的坐标?
- java - java.lang.ClassCastException:com.jcraft.jsch.ChannelSftp$2 无法转换为 java.io.FileInputStream
- c - 双缓冲和 printf
- oracle - 从今天的点和明天的未来点提取数据的 Oracle SQL 查询
- c++ - SDL_image 无法使用 IMG_LoadTexture() 加载 .png 文件
- ssl - 本地主机和主机上的 cookie
- sql - 内联三表好像不对
- batch-file - 如何正确实现我的命令循环“for”?