【发布时间】:2016-11-03 19:08:14
【问题描述】:
我已经开始将我的应用程序转换为使用 Option Strict On。我一直在做CStr,Ctype等,进展顺利。
SQLCommand.Parameters.AddWithValue("@TERMINATE", If(IsNothing(txtEarningsTerminated.DateValue), DBNull.Value, txtEarningsTerminated.DateValue))
然后我打了这个。 txtEarningsTerminated.DateValue 是一个自定义屏蔽文本框。当它的值是 Nothing 我不想在数据库中存储任何东西。但是,它指出
Cannot infer a common type, and Option Strict On does not allow 'Object' to be assumed.
当我将 DBNull.Value 更改为 "" 或什么都不更改时,错误就会消失。然而,作为 Nothing,它在运行时说明失败
The parameterized query '(@CONTROL int,@CLIENTCODE nvarchar(10),@NoBill int,@TERMINATE nv' expects the parameter '@TERMINATE', which was not supplied.
我想在数据库中放置一个 NULL。该值可以是日期,然后变为 NULL。
如何翻译这句话以免在 Option Strict On 下产生错误?
【问题讨论】:
-
尝试在您的存储过程中为此参数设置一个默认的空值。
-
DbNull与Nothing不同。不知道txtEarningsTerminated是什么,因为它有一个DateValue属性,但我怀疑它是可空的 -
txtEarningsTerminated.DateValue 是一个日期?
-
有趣的是,当大多数 vb.net 开发人员开始时将
Option Strict变为On- C# 开发人员开始越来越多地使用dynamic关键字:) -
我花了一点时间,但我已将所有 AddWithValue 更改为仅添加。我还制作了一个程序来帮助改变。我不能在这里发布它,因为它与这个问题无关。现在,回到 Option Strict On 更改。
标签: vb.net visual-studio-2015 sql-server-2016