数据库中的值为NULL时,SqlDataReader停止

数据库中的值为NULL时,SqlDataReader停止,sql,sql-server,vb.net,Sql,Sql Server,Vb.net,我是vb新手,我正在创建一个项目,在那里我可以编辑一个帐户,到目前为止我遇到了麻烦。当我的数据库中的值为空时,.read函数停止 ElseIf ButtonChoice = 2 Then txtIDnumber.Text = val Dim EditFamilyProfile As New SqlCommand("Select * From [186].[dbo].[familyInfo] WHERE pFnumber = @pFnumber",

我是vb新手,我正在创建一个项目,在那里我可以编辑一个帐户,到目前为止我遇到了麻烦。当我的数据库中的值为空时,
.read
函数停止

ElseIf ButtonChoice = 2 Then
            txtIDnumber.Text = val
            Dim EditFamilyProfile As New SqlCommand("Select * From [186].[dbo].[familyInfo] WHERE pFnumber = @pFnumber", Connection)
            EditFamilyProfile.CommandType = CommandType.Text
            EditFamilyProfile.Parameters.AddWithValue("@pFnumber", txtIDnumber.Text)
            Dim drEdit As SqlDataReader
            drEdit = EditFamilyProfile.ExecuteReader
            With drEdit
                .Read()
                txtLastName.Text = .Item(1)
                txtFirstName.Text = .Item(2)
                txtMiddleName.Text = .Item(3)
                txtExt.Text = .Item(4)
                txtAddress.Text = .Item(5)
                cmbGender.Text = .Item(6)
.close()
            End With
        End If
它在
txtext.text
中停止,因为它有一个空值。没有显示错误。只需转到代码:

  ButtonChoice = 2
        Dim obb As New frm_FamilyReg
        obb.val = Me.txtIDnumber.Text()
        obb.Show()
        Me.Close()

只需使用
IsDBNull()
函数检查是否有dbNUll值,如果有,则跳过它

if not IsDBNull(txtLastName.Text = .Item(1)) then
   txtLastName.Text = .Item(1)
End If

尝试将值从datareader解析为StringReader如果要使用SqlDataReader,则必须这样做。因为我们不能通过SqlDataReader运行循环。循环可以应用于数据表,这将是不同的方法,甚至是位。该死但是我很困惑,因为我在我的另一个项目上用我的checkstate做了这个,它工作得很好。标记它的答案,如果你得到了答案,就关闭这个问题。伙计,我很抱歉。但是当我尝试它的时候它仍然不起作用,这很奇怪。结果如何?有什么具体的错误吗?