我编写了一个代码,当用户名与登录到我的程序的用户相同时,该代码从访问数据库中检索电子邮件地址。
Dim x
If ConnectionDb.State = ConnectionState.Closed Then ConnectionDb.Open()
Dim cmd As OleDbCommand = ConnectionDb.CreateCommand
cmd.CommandText = " SELECT ID, EmailAddress, TelephoneNo FROM tblContacts WHERE ID='" & NameVariable & "'"
x = cmd.ExecuteReader()
While x.Read()
If x("EmailAddress").IsDBNull(0) Then
Return
Else
Email.Text = x.GetString(0)
End If
. . . .
但是,由于某些用户没有EmailAddress的值,因此在运行程序时收到以下错误:
System.MissingMemberException:'未找到类型'DBNull'上公共成员'IsDBNull'' -第7行
我还希望添加TelephoneNo
值的功能,使其也显示在表单的文本框中。如何才能成功地检查空值而不使程序运行出错?
2条答案
按热度按时间63lcw9qa1#
根据您的选择,
Dim x
可以是不同的东西。但在您情况下,这是
object
,因为使用option infer
时,您需要在同一行上声明和赋值您需要执行Dim x as OleDbDataReader
这样,您将在IsDBNull
上看到intellisence错误您实际上在此处遇到了后期绑定错误你应该这样做
这将解决您的问题。但您有更多的问题。好的,如果您选择单行/单值,只需使用
ExecuteScalar
。或者,至少做
kcrjzv8t2#
最简单(但棘手的解决方案)的方法可能是
如果
x("EmailAddress")
为DBNUll,则Email.Text
包含空字符串(=“”)。在所有其他情况下,它包含
EmailAddress
列值。