Click here to Skip to main content
15,887,886 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more: , +
Hi,

Can anyone tell me why datareader is no reading user_id from this code?

I debugged and the user_id_select remains 0 and I am getting no errors.

VB
Protected Sub btnAddUser_Click(sender As Object, e As EventArgs) Handles btnAddUser.Click

        Dim conn As New SqlConnection("Data Source=BRIAN-PC\SQLEXPRESS;Initial Catalog=master_db;Integrated Security=True")
        Dim searchComm As String = "SELECT user_id FROM users WHERE username=@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.ToString)

        Dim datareader As SqlDataReader = searchSQL.ExecuteReader()

        datareader.Read()

        While datareader.Read

            user_id_select = datareader("user_id")

        End While


        datareader.Close()
        conn.Close()

        Dim addComm As String = "INSERT user_id, project_id INTO user_project VALUES (@UserID,@ProjectID)"

        Dim addSQL As New SqlCommand

        conn.Open()

        addSQL = New SqlCommand(addComm, conn)

        addSQL.Parameters.AddWithValue("@UserID", Convert.ToInt32(user_id_select))
        addSQL.Parameters.AddWithValue("@ProjectID", Convert.ToInt32(Session("project_id")))

        Dim datareader2 As SqlDataReader = searchSQL.ExecuteReader()




        datareader.Close()
        conn.Close()




    End Sub
Posted

it is because u r already reading value from reader remove this line from code datareader.Read()
i.e
VB
Protected Sub btnAddUser_Click(sender As Object, e As EventArgs) Handles btnAddUser.Click

           Dim conn As New SqlConnection("Data Source=BRIAN-PC\SQLEXPRESS;Initial Catalog=master_db;Integrated Security=True")
           Dim searchComm As String = "SELECT user_id FROM users WHERE username=@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.ToString)

           Dim datareader As SqlDataReader = searchSQL.ExecuteReader()

           //datareader.Read()

           While datareader.Read

               user_id_select = datareader("user_id")

           End While


           datareader.Close()
           conn.Close()

           Dim addComm As String = "INSERT user_id, project_id INTO user_project VALUES (@UserID,@ProjectID)"

           Dim addSQL As New SqlCommand

           conn.Open()

           addSQL = New SqlCommand(addComm, conn)

           addSQL.Parameters.AddWithValue("@UserID", Convert.ToInt32(user_id_select))
           addSQL.Parameters.AddWithValue("@ProjectID", Convert.ToInt32(Session("project_id")))

           Dim datareader2 As SqlDataReader = searchSQL.ExecuteReader()




           datareader.Close()
           conn.Close()




       End Sub
 
Share this answer
 
You called .Read() twice on the DataReader. So it has advanced too far.

Since you are only expecting one user record try something like this instead

VB
If datareader.HasRows THEN
  datareader.Read()
  user_id_select = datareader("user_id")
End If
 
Share this answer
 
Brackets, my friend, brackets.
Change:
VB
searchSQL.Parameters.AddWithValue("@username", txtUserSearch.Text.ToString)
To:
VB
searchSQL.Parameters.AddWithValue("@username", txtUserSearch.Text.ToString())
But in fact you don't need the ToString at all, since a Text property is a string already, so use this instead:
VB
searchSQL.Parameters.AddWithValue("@username", txtUserSearch.Text)
 
Share this answer
 
Comments
ZurdoDev 23-Apr-13 15:04pm    
VB doesn't care about () for functions that take no parameters. At least that is how I remember it when I did it years ago. :)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900