2013-04-08 3 views
1

J'essaie d'exécuter ce code ci-dessous. Cela fonctionnait auparavant, mais lorsque j'ai ajouté un second lecteur de données, il s'est arrêté. Quelqu'un peut-il me dire ce qui ne va pas?NullReferenceException - Référence d'objet non définie sur une instance d'un objet

Protected Sub btnSearchUser_Click(sender As Object, e As EventArgs) Handles btnSearchUser.Click 

     Dim conn As New SqlConnection("Data Source=BRIAN-PC\SQLEXPRESS;Initial Catalog=master_db;Integrated Security=True") 
     Dim searchComm As String = "SELECT * FROM users WHERE username LIKE @username" 
     Dim user_id_select As New Integer 

     Dim searchSQL As New SqlCommand 

     conn.Open() 

     searchSQL = New SqlCommand(searchComm, conn) 
     searchSQL.Parameters.AddWithValue("@username", txtUserSearch.Text) 

     Dim datareader As SqlDataReader = searchSQL.ExecuteReader() 

     While datareader.Read 

      lstUsers.Items.Add(datareader.Item("username")) 

     End While 

     datareader.Close() 
     conn.Close() 


     Dim conn2 As New SqlConnection("Data Source=BRIAN-PC\SQLEXPRESS;Initial Catalog=master_db;Integrated Security=True") 
     Dim selectComm As String = "SELECT user_id FROM users WHERE [email protected]_selected" 

     Dim selectSQL As New SqlCommand 

     conn2.Open() 


     selectSQL = New SqlCommand(selectComm, conn2) 
     selectSQL.Parameters.AddWithValue("@username_selected", lstUsers.SelectedItem.Text.Trim) 

     Dim datareader2 As SqlDataReader = selectSQL.ExecuteReader() 

     While datareader2.Read 

      If datareader2.HasRows Then 

       user_id_select = datareader2("user_id") 

       lblUserSelected.Text = "Selected: " + lstUsers.SelectedItem.Text 

      ElseIf datareader2.HasRows = False Then 

       lblInvalidUsername.Visible = True 
       datareader2.Close() 


      End If 

     End While 


     conn2.Close() 



    End Sub 

enter image description here

Salut,

Je suis gettin une exception NullReference sur lblUserSelected.Text = "Selected: " + lstUsers.SelectedItem.Text chaque fois que j'entrer un nom d'utilisateur dans txtUserSearch et cliquez sur la recherche, il travaillait auparavant .. Je ne sais pas ce que est arrivé ..

Quelqu'un peut-il me dire ce qui est mal?

+0

Probablement le 'lstUsers' est le null, et est caché de quelque chose que vous avez maintenant ici. – Aristos

+0

Est-ce que 'lstUsers' existe même? – MikeSmithDev

Répondre

0

Je suppose que vous obtenez le NullReferenceException sur cette ligne:

selectSQL.Parameters.AddWithValue("@username_selected", lstUsers.SelectedItem.Text.Trim) 

puisque vous n'avez pas spécifié la SelectedItem du ListBox récemment rempli. Pour sélectionner le premier élément que vous pouvez utiliser ce code:

While datareader.Read 
    lstUsers.Items.Add(datareader.Item("username")) 
End While 
If lstUsers.Items.Count <> 0 Then lstUsers.SelectedIndex = 0 

Vous aussi manipulez pas le cas qu'il n'y a pas les noms d'utilisateur dans la base de données, le ListBox est vide et n'a pas-élément sélectionné.

+0

Ohh merci, ça a marché! – Brian

Questions connexes