我使用Visual Studio 2019,用VB.NET Windows Forms生成.NET Framework 4.7.2。
问题是当我按照老师的教程视频进行操作时。当程序连接到数据库时,我的程序正在运行,但当我点击保存按钮时,会出现这样的消息。
System.InvalidCastException: 'Operator '+' is not defined for type 'DBNull' and type 'Integer''.
下面是代码 。
If rd.HasRows Then
Dim ubah As String
ubah = "Update from cabang set total ='" & rd.Item("total") + 1 &
"' where id='" & Mid(ComboBox1.Text, 1, 1) & "'"
cmd = New OdbcCommand(ubah, conn)
cmd.ExecuteNonQuery()
End If
周围有一些假设 rd.Item("total") + 1
表达式,假设你的数据被打破:如果 rd.Item("total")
产量 DBNull
你不能合法地执行 + 1
操作--因此 InvalidCastException
.
考虑将 "从 "中获取值 "分离出来。rd.Item("total")
的 "添加 "部分。1
的值,到 rd.Item("total")
"部分,并核实该 +
操作首先是合法的。
Dim totalValue As Object
totalValue = rd.Item("total")
If totalValue <> DBNull.Value Then
ubah = "Update from cabang set total ='" & totalValue + 1 &
"' where id='" & Mid(ComboBox1.Text, 1, 1) & "'"
Else
'total is NULL. what now?
End If
还可以考虑使用实际 Parameter
的对象来使用你的 Command
而不是将用户输入的内容串联到你的命令串中--。强制性XKCD注意:这使你的代码容易受到SQL注入的影响,这是一个合法的错误和性能问题,而不仅仅是一个假设性的 "安全 "问题。