在运行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. [BOI2004]Sequence 数字序列(左偏树)

    PS:参考了黄源河的论文<左偏树的特点及其应用> 题目描述:给定一个整数序列\(a_1, a_2, - , a_n\),求一个递增序列\(b_1 < b_2 < - < ...

  2. 首次使用Oracle SQL Developer 提示: enter the full pathname for java.exe

    https://www.cnblogs.com/520future/p/7699095.html 首次使用Oracle SQL Developer 提示: enter the full pathnam ...

  3. Linux(1)-卸载挂载分区

    > df -lh > fuser -m -v /dev/mapper/autovg-autolv > fuser -m -k -v /dev/mapper/autovg-autolv ...

  4. .pyc是个什么 python的执行过程

    1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在.如果是解释型语言, ...

  5. Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc

    python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...

  6. HMM隐马尔科夫算法(Hidden Markov Algorithm)初探

    1. HMM背景 0x1:概率模型 - 用概率分布的方式抽象事物的规律 机器学习最重要的任务,是根据一些已观察到的证据(例如训练样本)来对感兴趣的未知变量(例如类别标记)进行估计和推测. 概率模型(p ...

  7. js介绍,js三种引入方式,js选择器,js四种调试方式,js操作页面文档DOM(修改文本,修改css样式,修改属性)

    js介绍 js运行编写在浏览器上的脚本语言(外挂,具有逻辑性) 脚本语言:运行在浏览器上的独立的代码块(具有逻辑性) 操作BOM 浏览器对象盒子 操作DOM 文本对象 js三种引入方式 (1)行间式: ...

  8. 16、爬取知乎大v张佳玮的文章“标题”、“摘要”、“链接”,并存储到本地文件

    爬取知乎大v张佳玮的文章“标题”.“摘要”.“链接”,并存储到本地文件 # 爬取知乎大v张佳玮的文章“标题”.“摘要”.“链接”,并存储到本地文件 # URL https://www.zhihu.co ...

  9. A fine property of the convective terms of axisymmetric MHD system, and a regularity criterion in terms of $\om^\tt$

    In [Zhang, Zujin; Yao, Zheng-an. 3D axisymmetric MHD system with regularity in the swirl component o ...

  10. [物理学与PDEs]第2章习题7 一维不可压理想流体的求解

    设有以 $x$ 轴为轴向的等轴截面管道, 其中充满着沿 $x$ 方向流动的不可压缩的理想流体, 在每一横截面上流体的状态相同, 且 $p=p(x)$. 若已知 $p(0) =p_1$, $p(L)=p ...