C# 数据为空,不能对NULL调用此方法或属性的解决办法
在运行C#项目时,报出了以下错误,错误原因是数据库中的值为null时,查询时会触发该错误提示

部分源代码如下:
public List<Student> findData2()
{
float shouru = ; //收入
float zhichu = ; //支出
float yingli = ; //盈利
string sql = "select a.GoodsID,b.SellID,a.GoodsName,a.NeedPay,a.HasPay,b.NeedPay,b.HasPay from dbo.tb_Goods a left join dbo.tb_Sell b on a.GoodsID=b.GoodsID;"; //左外连接部分列查询
// MessageBox.Show(sql);
SqlCommand cmd = new SqlCommand(sql, conn);
List<Student> list = new List<Student>();
SqlDataReader reader = cmd.ExecuteReader();
{
while (reader.Read())
{
if (reader.IsDBNull()) //判断为空,则数值不变
{
shouru = shouru + ;
}
else
{
shouru = shouru + float.Parse(Convert.ToString(reader.GetValue())); //不为空,则进行类型转换后数值相加
}
if (reader.IsDBNull())
{
zhichu = zhichu +;
}
else
{
zhichu = zhichu + float.Parse(Convert.ToString(reader.GetValue()));
}
if (reader.IsDBNull())
{
yingli = yingli + float.Parse(Convert.ToString(reader.GetValue())) - float.Parse(Convert.ToString(reader.GetValue())) + ;
}
else
{
yingli = yingli + float.Parse(Convert.ToString(reader.GetValue())) - float.Parse(Convert.ToString(reader.GetValue())) + float.Parse(Convert.ToString(reader.GetValue())) - float.Parse(Convert.ToString(reader.GetValue()));
}
// MessageBox.Show(Convert.ToString(yingli));
Student st = new Student(Convert.ToString(reader.GetString()), Convert.ToString(reader.GetValue()), Convert.ToString(reader.GetValue()), Convert.ToString(reader.GetValue()), Convert.ToString(reader.GetValue()), Convert.ToString(reader.GetValue()), Convert.ToString(reader.GetValue()));
list.Add(st); } }
return list;
}
这个代码是从数据库实现左外连接的部分列查询显示,输出的表格中有7个列,对应reader.GetValue(0))到reader.GetValue(6))

长话短说,解决办法就是
将reader.GetValue(4)
改为Convert.ToString(reader.GetValue())
由于我还将Convert.ToString(reader.GetValue(4))进行了float类型的数据转换,所以看着更加复杂一些
还有我参考网上进行了判空的if语句,不过网上的if语句中都是判断不为空的,我这个代码里是判断为空的,因为要进行数值相加,读者请自行更改
C# 数据为空,不能对NULL调用此方法或属性的解决办法的更多相关文章
- 3-java中String值为空字符串与null的判断方法
java中String值为空字符串与null的判断方法 2018年01月21日 14:53:45 阅读数:1189 Java空字符串与null的区别 1.类型 null表示的是一个对象的值,而不是一个 ...
- 反射-优化及程序集等(用委托的方式调用需要反射调用的方法(或者属性、字段),而不去使用Invoke方法)
反射-优化及程序集等(用委托的方式调用需要反射调用的方法(或者属性.字段),而不去使用Invoke方法) 创建Delegate (1).Delegate.CreateDelegate(Type, ...
- ie8 报错:意外地调用了方法或属性访问
在某场景中一句简单的js: $("#changeOption").text("增加"); 在 IE8 下面报错:'意外地调用了方法或属性访问' 改成:$(&qu ...
- knockout.js(js)代码在IE中出现“意外地调用了方法或属性”的错误
var CartListViewModel = function () { var self = this; self.payment = [ { name: "", value: ...
- Spring MVC普通类或工具类中调用service报空空指针的解决办法(调用service报java.lang.NullPointerException)
当我们在非Controller类中应用service的方法是会报空指针,如图: 这是因为Spring MVC普通类或工具类中调用service报空null的解决办法(调用service报java.la ...
- winform客户端程序第一次调用webservice方法很慢的解决方法
.net2.0的winform客户端最常用的与服务端通信方式是通过webservice,最近在用dottrace对客户端做性能测试的时候发现,客户端程序启动以后,第一次调用某一个webservice的 ...
- Post数据到 https异常:基础连接已经关闭: 连接被意外关闭 解决办法
POST数据到HTTPS站点的时候需要设置ServicePointManager类的ServerCertificateValidationCallback属性,并且在POST到https://pass ...
- VS2010 F5调试时出现:“ 尝试运行项目时出错:未捕获通过反射调用的方法引发的异常”解决
VS2010 F5调试时出现 尝试运行项目时出错:未捕获通过反射调用的方法引发的异常 两个解决方法:1) 打开项目属性,选择调试选项卡,将“启用非托管代码调试”一项钩上.2) 打开项目属性,选择调试选 ...
- 安装SQL Server出现在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke的错误解决办法
以下是错误报告: 标题: SQL Server 安装程序失败. ------------------------------ SQL Server 安装程序遇到以下错误: 在创建窗口句柄之 ...
随机推荐
- RazorEngine
目标 使用razorengine编译cshtml页面生静态html 制作一个vs2017的插件,实现右击cshtml文件时,编译该文件. 环境 razorengine4.5 / netframewor ...
- Cucumber使用中问题
1.cucumber自动化执行提示chrome使用不支持的命令标记 --ignore-certificate-errors 大概问题是chrome版本和chrmedriver版本不对应 2." ...
- Memcached操作
标准协议和字段 Memcached的标准协议字段包含以下部分: 键,key,任意字符,最大250字节,不能有空格和换行 标志位,32比特,不能为0 超时时间,单位是秒,0代表永不超时,最长30天,30 ...
- matlab里面如何保留小数特定位数
[转载]Matlab取整函数有: fix, floor, ceil, round.取整函数在编程时有很大用处. 一.取整函数 1.向零取整(截尾取整) fix-向零取整(Round towards z ...
- vue---slot,slot-scoped,以及2.6版本之后插槽的用法
slot 插槽 ,是用在组件中,向组件分发内容.它的内容可以包含任何模板代码,包括HTML. vue 在 2.6.0 中,具名插槽和作用域插槽引入了一个新的统一的语法 (即 v-slot 指令).它取 ...
- jQuery使用(十三):工具方法
proxy() onConflict() each() map() parseJson() makeArray() proxy() $.proxy()的实现机制与原生javaScript中的bind( ...
- IScroll某些手机下不触发ScrollEnd问题处理
同样是微信7.0,看起来内核都是x5内核,两款不同的手机,一个有问题,一个没有问题. IScroll在问题手机下会出现快速拨动时候不触发ScrollEnd事件现象,轻点一次才会触发,解决办法 docu ...
- [物理学与PDEs]第1章第7节 媒质中的 Maxwell 方程组 7.3 媒质中电磁场量的表示
1. 电磁能量密度 $$\bex \cfrac{1}{2}({\bf E}\cdot{\bf D}+{\bf B}\cdot{\bf H}). \eex$$ 2. 电磁能量流密度向量 $$\bex { ...
- ST表学习笔记
ST表是一种利用DP思想求解最值的倍增算法 ST表常用于解决RMQ问题,即求解区间最值问题 接下来以求最大值为例分步讲解一下ST表的建立过程: 1.定义 f[i][j]表示[i,i+2j-1]这个长度 ...
- c#管理文件系统
using System; using System.Collections.Generic; using System.IO; using static System.Console; /*Syst ...