我花了大量的时间试图找到这个答案。我认为这很容易,但没有什么特定于我想要做的。所以我希望有人能帮忙。将空字符串转换为NULL双重
我将价值从一个系统带到另一个系统。我有几个字段以字符串形式出现,但他们需要作为DOUBLE进入新系统。当存在空字符串(“”)并且它试图将其存储为double时,就会出现问题。我尝试了一切。
dbnull.value
Double.TryParse
CDBL()
Double?
VAL()
等...不能得到这个工作,我不知道为什么。
所以这里是代码:
Dim specvertclr As String = dt23.Rows(0).ItemArray.GetValue(38).ToString()
然后当我插入该到我的数据库我得到的错误,因为该字段类型是数字,我想插入“”
我也有这工作:
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字段为EMPTY。
任何帮助?
这是我的尝试:
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 - https://msdn.microsoft.com/en-us/library/system.double.tryparse( v = vs.110).aspx –
字符串不是数字。 _specvertclr_是一个字符串。您需要使用[可空双精度变量](https://msdn.microsoft.com/en-us/library/b3h38hb0(v = vs.110).aspx) – Steve
我也尝试过,并且出现以下错误:从字符串“”转换为“Double”类型无效。 –