【问题标题】:Converting an empty null integer from datagridview and store into database从datagridview转换一个空的空整数并存储到数据库中
【发布时间】:2017-12-06 14:13:01
【问题描述】:

大家好,我有这段代码可以将 datagridview 读取到数据库。

cmd.Parameters.AddWithValue("@NxtKinNum", Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value));

添加的行是空单元格,我尝试将其添加到数据库中,其中 this 的值为整数...如何设置它以将空值存储到数据库中,或者不可能那?谢谢

【问题讨论】:

  • 您不需要将值转换为整数。当单元格的值为整数时,将插入整数。此外,如果值为DBNull.Value,则空值将插入列中。所以这样添加参数就足够了:cmd.Parameters.AddWithValue("@NxtKinNum", dataGridView1.Rows[i].Cells[3].Value);

标签: c# winforms datagridview


【解决方案1】:

我将假设您使用的数据库是 SQLServer。它有一个单独的 Null 类型,称为 DBNull。如果在值中获得空值时要为列插入空值,则应检查该值是否为空或空值,然后插入 DBNull。

类似的东西

 if (String.IsNullOrEmpty(value))
 {
     cmd.Parameters.AddWithValue("@NxtKinNum", DBNull.Value);
 }
 else
 {
     cmd.Parameters.AddWithValue("@NxtKinNum", value);
 }

编辑:如果您将数据源绑定到 DataGridView,那么对于具有空值的单元格,默认单元格值为 DBNull。在这种情况下,您可以按照 Reza 的建议进行操作并简单地使用

cmd.Parameters.AddWithValue("@NxtKinNum", dataGridView1.Rows[i].Cells[3].Value);

【讨论】:

  • @NoobCoder 你试过了吗?
  • 当单元格为空时,dataGridView1.Rows[i].Cells[3].Value 正好是DBNull.Value,你不需要做任何空值检查或转换。
  • 我已经有一段时间没有在 WinForms 上工作了,但我记得遇到过这个问题并使用了我提到的解决方案。您是否尝试过@RezaAghaei 建议的解决方案?
  • 阅读我的答案以查看正确的解决方案。另请查看链接的帖子。(顺便说一句,如果您在 cmets 中没有提及我,我将不会被告知该消息。)
【解决方案2】:

您不需要将值转换为整数。当字段的值为整数时,将插入整数。此外,如果值为DBNull.Value,则空值将插入列中。

所以这样添加参数就足够了:

cmd.Parameters.AddWithValue("@NxtKinNum", dataGridView1.Rows[i].Cells[3].Value);

注意

如果您使用TableAdapter,您可以更轻松地进行 CRUD 操作。看看这个帖子,例如CRUD Operations using DataGridView, DataTable and TableAdapter

【讨论】:

  • 嗨,假设有一个整数而不是空值,这段代码仍然有效吗?
  • 之前测试过你的方法,但我认为他们告诉我它的格式错误
  • 错误的解决方案是检查类型。这是正确的方法。
【解决方案3】:

首先,在您的表格设计中,“YourColumnName”应该是“Allow Null”。

cmd.Parameters.AddWithValue("@NxtKinNum",dataGridView1.Rows[i].Cells[3].Value==null ? DBNull.Value : dataGridView1.Rows[i].Cells[3].Value);

如果单元格值为空,则将空值存储在表中,否则存储datagridview单元格的值。

【讨论】:

    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 2012-07-29
    • 2016-10-21
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多