2015-01-11 1 views
0

после я программирования этот код для заполнения текстовом поле, когда выпадающий выбранный индекс изменилсяvb.net Заполнение Textbox В поле со списком выбранного индекса Изменено с базой данных SQL

я получил эту ошибку «ссылка на объект не указывает на экземпляр объект. ', что я могу сделать ??

Private Sub participant1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles participant1.SelectedIndexChanged 

    Try 
     Dim cmd As SqlCommand = New SqlCommand() 
     Dim datareader As SqlDataReader = Nothing 
     If Class1.sqlcon.State = ConnectionState.Open Then 
      Class1.sqlcon.Close() 
     End If 
     Class1.sqlcon.Open() 
     Dim query As String 
     query = " select * from tparticipant where namea = '" & participant1.Text & "'" 
     cmd = New SqlCommand(query, Class1.sqlcon) 
     While datareader.Read 
      If datareader IsNot Nothing Then 
       ID.Text = datareader.GetInt32("ID") 
       total.Text = datareader.GetInt32("total") 
      End If 

     End While 

    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try` 
+0

На первый взгляд, это выглядит как 'datareader' никогда не устанавливается (кроме как' Nothing'), поэтому 'Пока datareader.Read' потерпит неудачу. – Mark

+1

Возможный дубликат [Что такое исключение NullReferenceException и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – Mark

ответ

0

Вам нужно назначить cmd.ExecuteReader() ваши datareader. То, откуда происходит ваш NullReference.

datareader = cmd.ExecuteReader() 
+0

Я получил эту ошибку (преобразование из строки «total» в тип «Integer» недействительно.) –

+0

Спасибо, все в порядке –

0
Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Dim cn As New SqlClient.SqlConnection("Data Source=thee-pc;Initial Catalog=jobportal;Integrated Security=True") 
    Dim cmd As New SqlClient.SqlCommand 
    Dim tbl As New DataTable 
    Dim da As New SqlClient.SqlDataAdapter 
    Dim reader As SqlClient.SqlDataReader 
    Try 
     cn.Open() 
     Dim sql As String 
     sql = "select * from Register" 
     cmd = New SqlClient.SqlCommand(sql, cn) 
     reader = cmd.ExecuteReader 
     While reader.Read 
      Dim id = reader.Item("cid") 
      ComboBox1.Items.Add(id) 
     End While 
     cn.Close() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged 
    Dim cn As New SqlClient.SqlConnection("Data Source=thee-pc;Initial Catalog=jobportal;Integrated Security=True") 
    Dim cmd As New SqlClient.SqlCommand 
    Dim tbl As New DataTable 
    Dim da As New SqlClient.SqlDataAdapter 
    Dim reader As SqlClient.SqlDataReader 
    Try 
     cn.Open() 
     Dim sql As String 
     sql = "select * from register where cid ='" + ComboBox1.Text + "'" 
     cmd = New SqlClient.SqlCommand(sql, cn) 
     reader = cmd.ExecuteReader 
     While reader.Read 
      TextBox1.Text = reader.Item("cname") 
      TextBox2.Text = reader.Item("dob") 

     End While 
     cn.Close() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 

End Sub 

End Class

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