【发布时间】:2011-02-08 12:09:14
【问题描述】:
我正在开发一个从 Excel 电子表格导入的 vb.net 应用程序。
If rdr.HasRows Then
Do While rdr.Read()
If rdr.GetValue(0).Equals(System.DBNull.Value) Then
Return Nothing
Else
Return rdr.GetValue(0)
End If
Loop
Else
我使用字符串值来存储双精度值,在准备数据库语句时,我会使用以下代码:
If (LastDayAverage = Nothing) Then
command.Parameters.AddWithValue("@WF_LAST_DAY_TAG", System.DBNull.Value)
Else
command.Parameters.AddWithValue("@WF_LAST_DAY_TAG", Convert.ToDecimal(LastDayAverage))
End If
我现在有一些小数位数不少的数据,并且数据以科学计数法放入字符串变量中,所以这似乎是错误的方法。以字符串变量开头似乎不太合适。
如果我使用双精度或十进制类型变量,空白的 excel 值会显示为 0.0。
如何保留空白值?
注意:我试过了
变量为 Nullabe(Of Double)
但是当将值传递给 SQL 插入时,我得到:“可空对象必须有一个值。”
解决方案:
通过更改我调用的 sub 中参数的数据类型,然后使用 Variable.HasValue 进行条件 DBNull 插入来修复。
【问题讨论】:
-
是否有任何不应为空的 0.0 值?
-
数据库中的那个字段是否允许空值?
-
是的,有 0.0 也有空值。这就是问题:)
标签: vb.net