从数据库列错误中在 richtextbox 中显示多个数据

show multiple data on rcihtextbox from database column error

我的代码有什么问题?错误发生在更新块“ 如果 reader1.Read() 那么 rtbURThirdMolar.Text = reader1.Item("Up_Right_3rd_Molar")" 从类型 'DBNull' 到类型 'String' 的转换无效

  Private Sub txtURThirdMolar_KeyDown(sender As Object, e As KeyEventArgs) Handles txtURThirdMolar.KeyDown
            MySqlConn.open()
            If e.KeyCode = Keys.Enter Then

                query1 = "SELECT * FROM teethhistory WHERE Patient_ID_Number ='" & lblID.Text & "'"
                cmd1 = New MySqlCommand(query1, MySqlConn)
                reader = cmd1.ExecuteReader

                If reader.HasRows Then
                    Dim i As Integer
                    With cmd
                        .Connection = MySqlConn
                        .CommandText = "UPDATE teethhistory SET Up_Right_3rd_Molar = concat('" & txtURThirdMolar.Text & Environment.NewLine & "',Up_Right_3rd_Molar) WHERE Patient_ID_Number = " & lblID.Text
                        reader.Close()
                        i = .ExecuteNonQuery
                    End With

                    If i > 0 Then
                        MsgBox("Updated!", MsgBoxStyle.Information, "Success")

                        txtURThirdMolar.Text = ""
                        Dim query2 As String
                        Dim reader1 As MySqlDataReader
                        Dim cmd2 As MySqlCommand
                        query2 = "SELECT * FROM teethhistory WHERE Patient_ID_Number ='" & lblID.Text & "'"
                        cmd2 = New MySqlCommand(query2, MySqlConn)

                        reader1 = cmd2.ExecuteReader

                        If reader1.Read() Then
                    rtbURThirdMolar.Text = reader1.Item("Up_Right_3rd_Molar") 'THIS IS WHERE THE ERROR OCCURS

                        End If


                    Else
                        MsgBox("Failed", MsgBoxStyle.Information, "Failed")
                    End If


                Else
                    Dim cmd As MySqlCommand = MySqlConn.CreateCommand
                    cmd.CommandText = String.Format("INSERT INTO teethhistory (Patient_ID_Number, Fullname, Up_Right_3rd_Molar )" &
                                                "VALUES ('{0}' ,'{1}' ,'{2}')",
                                                lblID.Text,
                                                lblFullname.Text,
                                                txtURThirdMolar.Text)
                    reader.Close()
                    Dim affectedrows As Integer = cmd.ExecuteNonQuery()
                    If affectedrows > 0 Then
                        MsgBox("Saved!", MsgBoxStyle.Information, "Success")
                        txtURThirdMolar.Text = ""
                        Dim query2 As String
                        Dim reader2 As MySqlDataReader
                        Dim cmd2 As MySqlCommand
                        query2 = "SELECT * FROM teethhistory WHERE Patient_ID_Number ='" & lblID.Text & "'"
                        cmd2 = New MySqlCommand(query2, MySqlConn)

                        reader2 = cmd2.ExecuteReader

                        If reader2.Read() Then

                            rtbURThirdMolar.Text = reader2.Item("Up_Right_3rd_Molar")

                        End If
                    Else
                        MsgBox("Saving failed.", MsgBoxStyle.Critical, "Failed")

                    End If
                End If

            End If
            MySqlConn.close()
        End Sub

使用

rtbURThirdMolar.Text = reader1.Item("Up_Right_3rd_Molar").ToString

这是因为您引用的项目是 NULL。