【发布时间】:2012-07-06 22:22:35
【问题描述】:
我正在重写这个很长的 INSERT 语句和参数,以前看起来像这样:
cmd.Parameters.AddWithValue("@Website", General.fnSQLNullValues(tWebsite.Text))
General.fnSQLNullValues 是这样的:
Public Shared Function fnSQLNullValues(ByVal sValue As Object, Optional ByVal Len As Integer = 999999) As Object
If sValue Is Nothing Then Return DBNull.Value
fnSQLNullValues = IIf(sValue.ToString.Length = 0, DBNull.Value, Left(sValue.ToString(), Len))
End Function
我一点也不喜欢这个,而且似乎要写很多代码来做这个,
cmd.Parameters.AddWithValue("@Website" , If(tWebsite.Text , DBNull.Value))
据我了解,如果 tWebsite.Text 为 null 或不被接受,那么 DBNull.Value 中的一行代码将替换 tWebsite.Text 作为值,并且在我看来,它与一般的其他函数做同样的事情。这是正确的吗?一种方法比另一种更好吗?
另外,我从第二种方式收到警告:“无法推断通用类型;假定对象”,但在我看来,第一种方式无论如何都是使用通用对象,所以我不知道我是否应该忽略这个警告
【问题讨论】:
-
请更新标题/问题/标签,因为 这确实与 ADO/SQL 无关 并且与
Iff与If(合并)有关。 (但是,应该很有可能使用null而不是DBNull.Value,在涉及引用或Nullable 类型的情况下,可以将其“静默强制转换”为类型。)
标签: asp.net vb.net sqlparameter