将空值分配给 SQL 中的小数字段
Assign null value to a decimal field in SQL
我想在 SQL 2014 的字段中分配 null value
,其数据类型为 decimal
。我尝试使用这些代码,但没有得到我想要的方式 (前提是存在其他字段名和值。)
query = "INSERT INTO DBNAME.TLTRPRGP(DECIMALVAL) VALUES(@DECIMALVAL)"
params = New String() {"BLGSCD"}
values = New String() {Nothing}
SaveUpdateDelete(query, params, values)
query = "INSERT INTO DBNAME.TLTRPRGP(DECIMALVAL) VALUES(@DECIMALVAL)"
params = New String() {"BLGSCD"}
values = New String() {DbNull.Value}
SaveUpdateDelete(query, params, values)
query = "INSERT INTO DBNAME.TLTRPRGP(DECIMALVAL) VALUES(@DECIMALVAL)"
params = New String() {"BLGSCD"}
values = New String() {VbNull}
SaveUpdateDelete(query, params, values)
Private Sub SaveUpdateDelete(ByVal sql As String, ByVal parameters() As String, ByVal Values() As String)
If con.State = ConnectionState.Open Then
con.Close()
End If
con.Open()
Dim command As New SqlCommand
command = New SqlCommand(sql, con)
For i = 0 To parameters.Count - 1
command.Parameters.AddWithValue("@" & parameters(i).ToString, Values(i))
Next
command.CommandText = sql
command.ExecuteNonQuery()
con.Close()
End Sub
第一个代码returns 0
。第二个 returns 语法错误 说 "Value System.DbNull.Value cannot be converted to String"
。第三个代码returns 1
。所有这些代码都未能 return 正确的值,该值应该是 NULL
或 EMPTY
。还有什么可以尝试的?
问题在于值的数据类型:您将其限制为字符串,但有些值无法转换为字符串(例如:DBNull.Value
)。
解决方案是使用泛型 object
作为传递给函数 SaveUpdateDelete
的参数的数据类型。
我想在 SQL 2014 的字段中分配 null value
,其数据类型为 decimal
。我尝试使用这些代码,但没有得到我想要的方式 (前提是存在其他字段名和值。)
query = "INSERT INTO DBNAME.TLTRPRGP(DECIMALVAL) VALUES(@DECIMALVAL)"
params = New String() {"BLGSCD"}
values = New String() {Nothing}
SaveUpdateDelete(query, params, values)
query = "INSERT INTO DBNAME.TLTRPRGP(DECIMALVAL) VALUES(@DECIMALVAL)"
params = New String() {"BLGSCD"}
values = New String() {DbNull.Value}
SaveUpdateDelete(query, params, values)
query = "INSERT INTO DBNAME.TLTRPRGP(DECIMALVAL) VALUES(@DECIMALVAL)"
params = New String() {"BLGSCD"}
values = New String() {VbNull}
SaveUpdateDelete(query, params, values)
Private Sub SaveUpdateDelete(ByVal sql As String, ByVal parameters() As String, ByVal Values() As String)
If con.State = ConnectionState.Open Then
con.Close()
End If
con.Open()
Dim command As New SqlCommand
command = New SqlCommand(sql, con)
For i = 0 To parameters.Count - 1
command.Parameters.AddWithValue("@" & parameters(i).ToString, Values(i))
Next
command.CommandText = sql
command.ExecuteNonQuery()
con.Close()
End Sub
第一个代码returns 0
。第二个 returns 语法错误 说 "Value System.DbNull.Value cannot be converted to String"
。第三个代码returns 1
。所有这些代码都未能 return 正确的值,该值应该是 NULL
或 EMPTY
。还有什么可以尝试的?
问题在于值的数据类型:您将其限制为字符串,但有些值无法转换为字符串(例如:DBNull.Value
)。
解决方案是使用泛型 object
作为传递给函数 SaveUpdateDelete
的参数的数据类型。