一张。 2022-03-08 20:27 采纳率: 0%
浏览 60

datatable使用Update 更新问题

问题遇到的现象和发生背景

在更新datatable时使用Getchange方法时用update更新表,为什么显示Object cannot be cast from DBNull to other types

问题相关代码,请勿粘贴截图

private void tsbSave_Click(object sender, EventArgs e)
{
DataTable changeDt=dtml.GetChanges();
foreach (DataRow dr in changeDt.Rows)
{
string strSQL = string.Empty;
if (dr.RowState == System.Data.DataRowState.Added)
{
strSQL = @"INSERT INTO [dbo].[MaterialInfo]
([material_cd]datatable
,[material_nm]
,[material_class]
,[material_unit]
,[material_price]
,[budget_price])
VALUES
('" + dr["material_cd"].ToString() + @"'
,'" + dr["material_nm"].ToString() + @"'
,'" + dr["material_class"].ToString() + @"'
,'" + dr["material_unit"].ToString() + @"'
," + Convert.ToDecimal(dr["material_price"]) + @"
," + Convert.ToDecimal(dr["budget_price"]) + @")";
}
else if (dr.RowState == System.Data.DataRowState.Deleted)
{
strSQL = @"DELETE FROM [dbo].[MaterialInfo]
WHERE material_cd= '" + dr["material_cd", DataRowVersion.Original].ToString() + @"'";
}
else if (dr.RowState == System.Data.DataRowState.Modified)
{
if (dr["material_unit"]!= DBNull.Value)
{
strSQL = @"UPDATE[dbo].[MaterialInfo]
SET [material_nm] = '" + dr["material_nm"].ToString() + @"'
,[material_class] ='" + dr["material_class"].ToString() + @"'
,[material_unit] ='" + dr["material_unit"].ToString() + @"'
,[material_price] =" + Convert.ToDecimal( dr["material_price"]) + @"
,[budget_price] =" + Convert.ToDecimal(dr["budget_price"]) + @"
WHERE material_cd = '" + dr["material_cd"].ToString() + @"'";
}

            }
            SqlCommand comm = new SqlCommand(strSQL, connml);
            comm.ExecuteNonQuery();
        }
    }
运行结果及报错内容

报错:Object cannot be cast from DBNull to other types

我的解答思路和尝试过的方法

好像是deimial不能转化,但不知道该怎么改

我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 是小明同学呀 2022-03-09 14:15
    关注

    有空对象,检查一下你的类型转换里面哪个被转的对象为空,

    评论

报告相同问题?

问题事件

  • 创建了问题 3月8日

悬赏问题

  • ¥15 Opencv(C++)异常
  • ¥15 VScode上配置C语言环境
  • ¥15 汇编语言没有主程序吗?
  • ¥15 这个函数为什么会爆内存
  • ¥15 无法装系统,grub成了顽固拦路虎
  • ¥15 springboot aop 应用启动异常
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错