在运行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调用此方法或属性的解决办法的更多相关文章

  1. 3-java中String值为空字符串与null的判断方法

    java中String值为空字符串与null的判断方法 2018年01月21日 14:53:45 阅读数:1189 Java空字符串与null的区别 1.类型 null表示的是一个对象的值,而不是一个 ...

  2. 反射-优化及程序集等(用委托的方式调用需要反射调用的方法(或者属性、字段),而不去使用Invoke方法)

    反射-优化及程序集等(用委托的方式调用需要反射调用的方法(或者属性.字段),而不去使用Invoke方法)   创建Delegate (1).Delegate.CreateDelegate(Type, ...

  3. ie8 报错:意外地调用了方法或属性访问

    在某场景中一句简单的js: $("#changeOption").text("增加"); 在 IE8 下面报错:'意外地调用了方法或属性访问' 改成:$(&qu ...

  4. knockout.js(js)代码在IE中出现“意外地调用了方法或属性”的错误

    var CartListViewModel = function () { var self = this; self.payment = [ { name: "", value: ...

  5. Spring MVC普通类或工具类中调用service报空空指针的解决办法(调用service报java.lang.NullPointerException)

    当我们在非Controller类中应用service的方法是会报空指针,如图: 这是因为Spring MVC普通类或工具类中调用service报空null的解决办法(调用service报java.la ...

  6. winform客户端程序第一次调用webservice方法很慢的解决方法

    .net2.0的winform客户端最常用的与服务端通信方式是通过webservice,最近在用dottrace对客户端做性能测试的时候发现,客户端程序启动以后,第一次调用某一个webservice的 ...

  7. Post数据到 https异常:基础连接已经关闭: 连接被意外关闭 解决办法

    POST数据到HTTPS站点的时候需要设置ServicePointManager类的ServerCertificateValidationCallback属性,并且在POST到https://pass ...

  8. VS2010 F5调试时出现:“ 尝试运行项目时出错:未捕获通过反射调用的方法引发的异常”解决

    VS2010 F5调试时出现 尝试运行项目时出错:未捕获通过反射调用的方法引发的异常 两个解决方法:1) 打开项目属性,选择调试选项卡,将“启用非托管代码调试”一项钩上.2) 打开项目属性,选择调试选 ...

  9. 安装SQL Server出现在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke的错误解决办法

    以下是错误报告:   标题: SQL Server 安装程序失败. ------------------------------   SQL Server 安装程序遇到以下错误:   在创建窗口句柄之 ...

随机推荐

  1. Codeforces 1082B Vova and Trophies(前缀+后缀)

    题目链接:Vova and Trophies 题意:给定长度为n的字符串s,字符串中只有G和S,只允许最多一次操作:任意位置的两个字符互换.求连续G的最长长度. 题解:维护pre和pr,nxt和nx. ...

  2. EOJ 306 树上问题

    题解: 因为w大于1,所以,题意就是,有多少(x,z),存在x到z的路径上,有一个x<y<z的y w没用的其实. 树上路径问题,有什么方法吗? 1.树链剖分.这个主要方便处理修改操作. 2 ...

  3. 关于ehcache缓存中eternal及timeToLiveSeconds和timeToIdleSeconds的说明

    今天发现开发项目启动时有警告提示:cache 'xx' is set to eternal but also has TTL/TTI set,发现是ehcache缓存设置冲突 所以决定在此mark一下 ...

  4. Python并发编程之同步\异步and阻塞\非阻塞

    一.什么是进程 进程: 正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 进程和程序的区别: 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程. 需要强调的是:同一个程序执行两次,那也 ...

  5. python去除html标签的几种方法

    import re from bs4 import BeautifulSoup from lxml import etree html = '<p>你好</p><br/& ...

  6. DirectX11--深入理解HLSL常量缓冲区打包规则

    HLSL常量缓冲区打包规则 DirectX11 With Windows SDK完整目录 欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报. 尽管打包规则并不 ...

  7. HTML(八)HTML meta标签&base标签

    HTML meta元素 标签(meta-information)用于提供页面有关的元数据,除了提供文档字符集.使用语言.作者等基本信息外,还涉及对关键词和网页等级的设定.通过设置不同的属性,元数据可以 ...

  8. [Android] Android RxJava2+Retrofit2+OkHttp3 的使用

    [Android] Android RxJava2+Retrofit2+OkHttp3 简单介绍Retrofit.OKHttp和RxJava之间的关系: Retrofit:Retrofit是Squar ...

  9. MySQL学习7 - 外键的变种 三种关系

    一 介绍 二 如何找两张表之间的关系 三 表的三种关系 1.书和出版社 2.作者和书籍的关系 3.用户和博客 本节的重点 如何找出两张表之间的关系 表的三种关系 一 介绍 因为有foreign key ...

  10. 使用Roslyn编译项目的示例

    using System; using System.Collections.Generic; using System.IO; using Microsoft.CodeAnalysis; using ...