我有这个SqlCommand
那个Sum all payments for client
,但是问题是没有付款的结果是null或0-我不确定。但是我仍然收到相同的异常:无法将对象从dbnull强制转换为其他类型
什么异常或if语句可以解决?
private void select_payments()
{
try
{
SqlCommand sc = new SqlCommand("SELECT SUM(payment) AS sumpayment FROM clientpayments WHERE subkey='" + selectid + "' AND year='" + selectedyear+ "'", con);
con.Open();
int result = Convert.ToInt32(sc.ExecuteScalar());
con.Close();
if (result != 0)
{
Convert.ToDecimal(textBox20.Text = result .ToString().Replace(',', '.'));
}
}
catch (Exception ex)
{
MessageBox.Show(" " + ex.Message.ToString());
}
}
我仍然收到此异常:
无法将对象从dbnull强制转换为其他类型
我知道这是低质量的问题,但是我不确定该如何解决。
感谢您的时间和答复。
最佳答案
您有两个选择。修复您的SQL语句或转换。
SQL-将SUM
包裹在ISNULL
中:
SELECT ISNULL(SUM(payment), 0)
转换-首先将其与
DBNull.Value
进行比较:var result = sc.ExecuteScalar();
int intResult = result == DBNull.Value ? 0 : Convert.ToInt32(result);
关于c# - SqlCommand结果-无法将对象从dbnull强制转换为其他类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18359571/