2015-12-10 1 views
1

Что не так с моим кодом? ошибка происходит на UPDATE блока " Если reader1.Read() Тогда rtbURThirdMolar.Text = reader1.Item (" Up_Right_3rd_Molar ")" Преобразование из типа 'DBNull' к типу 'Строка' не действуетпоказать несколько данных на rcihtextbox из ошибки столбца базы данных

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 

ответ

0

использование

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

это потому, что элемент, который вы ссылаетесь NULL.

+0

Я пробовал это, но ничего не отображается на richtextbox :(просто пусто – user5567987

+0

Моя программа имеет 32 текстовых поля, 32 richtextboxes, если данные введены в текстовое поле, после того, как они были сохранены, это будет показано в richtextbox **, НО ОДНА ВЕЩЬ, ЧТО Я УВИДЕТЬ, Он отлично работает только в одном из 32 текстовых полей, 31 richtextboes дает мне пустые результаты ** – user5567987

+0

yes..reader имеет нулевое значение, чтобы какое значение отображалось? –

 Смежные вопросы

  • Нет связанных вопросов^_^