【发布时间】:2015-06-12 05:47:16
【问题描述】:
当向数据库中插入一个新学生时,他们的 GPA 没有被输入,所以当我调用一个事件处理程序来显示 GPA 时,它会崩溃。
object value;
sql = string.Format("SELECT ROUND(AVG(CAST(Rating AS Float)), 4) FROM GPA WHERE StudentID={0};;", StudentID);
value = this.datatier.ExecuteScalarQuery(sql);
double avgGPA;
if (value != null)
{
System.Windows.Forms.MessageBox.Show("null");
avgGPA = Convert.ToDouble(value);
}
else avgGPA = 0.0;
我尝试了这个修复,我在Convert.ToDouble() 之前确保value!=null,但无论如何我都会崩溃,尤其是在这一行:
avgGPA = Convert.ToDouble(value);
错误:对象不能从 DBNull 转换为其他类型。
我的问题是如何分配一个默认值,例如 0.0,以便在找不到 GPA 时程序不会崩溃?
编辑:每个人都在解决方案上,谢谢大家!新的问题变成了,DBNull 是否总是数据库查询的空值?
【问题讨论】:
-
更改为 if(value != DbNull.Value)
-
另外,当你找不到它时,我不会将 gpa 设置为 0。使其可以为空或其他东西
-
没有人使用
value is DBNull#sadpanda
标签: c#