【发布时间】:2017-08-24 21:43:59
【问题描述】:
我花了一天的大部分时间试图找到这个问题的答案。我认为这很容易,但没有什么是特定于我正在尝试做的事情。所以我希望有人能提供帮助。
我将价值观从一个系统带到另一个系统。我有一些字段以字符串形式出现,但它们需要以 DOUBLE 的形式进入新系统。当有空字符串(“”)并且它试图将其存储为双精度时,就会出现问题。我什么都试过了。
dbnull.value
Double.TryParse
CDBL()
Double?
VAL()
等等...无法让它工作,我不知道为什么。
代码如下:
Dim specvertclr As String = dt23.Rows(0).ItemArray.GetValue(38).ToString()
然后,当我将其插入我的数据库时,我收到错误,因为字段类型是 NUMERIC,我正在尝试插入“”
我确实有这个工作:
Dim specvertclr As String
If dt23.Rows(0).ItemArray.GetValue(38).ToString() = "" Then
specvertclr = CStr(0)
Else
specvertclr = dt23.Rows(0).ItemArray.GetValue(38).ToString()
End If
但是这样做的问题是它插入了一个 0 值,而 0 与 NULL 不同。当源数据库中的字符串为空时,我希望目标数据库 (SQLCE) 中的 NUMERIC 字段为空。
有什么帮助吗?
这是我尝试过的:
Dim specvertclr As Nullable(Of Double) = CType(dt23.Rows(0).ItemArray.GetValue(38).ToString(), Double?)
然后我的插入是基本的,程序甚至在到达这里之前就抛出了一个错误。我知道这部分是正确的。
Dim cmd2 As SqlCeCommand = conn.CreateCommand()
cmd2.CommandText = "Insert into [Attr_Bridge] ([VERTCLR]) VALUES (?)"
With cmd2.Parameters
.AddWithValue("P1", specvertclr)
end with
【问题讨论】:
-
看看 Double.TryParse - msdn.microsoft.com/en-us/library/…
-
字符串不是数字。 specvertclr 是一个字符串。您需要使用nullable double var
-
我也试过了,我得到了以下错误:从字符串“”到类型“双”的转换无效。
-
那么把代码贴在你使用可空双精度的地方。以及用于将其插入数据库的代码
-
好的,编辑我的帖子以包含我尝试过的部分