gpt4 book ai didi

.net - 正确处理 dbnull 值

转载 作者:行者123 更新时间:2023-12-03 07:57:00 27 4
gpt4 key购买 nike

当用户名与登录我的程序的用户相同时,我编写了从 Access 数据库中检索电子邮件地址的代码。我希望在名为 Email 的文本框中显示电子邮件地址值

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: 'Public member 'IsDBNull' on type 'DBNull' not found.' - line 7



我还希望为 TelephoneNo 添加功能值也将显示在表单的文本框中。
如何在程序不出错的情况下成功检查空值?

最佳答案

取决于您的选择,Dim x可能是另一回事。如果选项 inferOn ,这是一个 reader这里

Dim x = cmd.ExecuteReader()

但在你的情况下,这是 object因为与 option infer您需要在同一行声明和分配。你需要做 Dim x as OleDbDataReader .这样您将在 IsDBNull 上看到智能错误.你真的在这里遇到后期绑定(bind)错误

你应该做这个
If DbNull.Value.Equals(x("EmailAddress")) Then

这将解决您的问题。但是你有更多的问题。好的,如果您选择单行/单值,只需使用 ExecuteScalar .

或者,至少做
If x.Read() AndAlso Not DbNull.Value.Equals(x("EmailAddress")) Then
Email.Text = x("EmailAddress").ToString()
End If

关于.net - 正确处理 dbnull 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60102247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com