在Access with VB.NET中将空字符串字段插入为null

时间:2012-01-04 01:16:38

标签: vb.net ms-access null

我在Windows窗体中有几个文本字段。其中一个文本字段允许为NULL。当我为每个字段输入一个值时,它全部插入,没问题。当我将字段(txtGewicht)留空时,我似乎无法在Access数据库中插入NULL。

    If Double.TryParse(txtGewicht.Text, 0) Then
      klant.Gewicht = Double.Parse(txtGewicht.Text)
    Else
      klant.Gewicht = Nothing
    End If

这就是我得到的:

“无法将列'Gewicht'设置为NULL,请改用DBNull”

所以我将'Nothing'更改为DBNull.value,但它告诉我System.DBNull无法转换为Double类型。

1 个答案:

答案 0 :(得分:0)

Double是值类型 - 不是引用类型。因此,默认情况下它不可为空。

如果声明klant.Gewicht如此:

Public Property Gewicht as Double

然后就命令构建器而言,它永远不会是“null”。

甚至明确说:

d = nothing

无效,仍为0.0

您可以尝试将您的属性实现为Nullable(Double)。

这将允许该属性被视为“空”。我不确定CommandBuilder是否会自动接收,但这是一个开始。

另外 - 我发现你Double.TryParse的方法很有趣。第二个参数的要点是将解析结果(如果成功)存储到。

您的代码可以缩短为:

If Not Double.TryParse(txtGewicht.Text, klant.Gewicht) Then
      klant.Gewicht = ' Some Default Value
End If

修改

如果您已经调试了调试器中的代码,您可能已经注意到klant.Gewicht即使在尝试将其设置为空之后仍为0.0(默认值)。