views:

33

answers:

2

Hey there. I have a function in VB.net that authenticates a user towards a MySQL DB before launching the main application. Here's the code of the function:

    Public Function authConnect() As Boolean
    Dim dbserver As String
    Dim dbuser As String
    Dim dbpass As String
    dbserver = My.Settings.dbserver.ToString
    dbuser = My.Settings.dbuser.ToString
    dbpass = My.Settings.dbpass.ToString
    conn = New MySqlConnection
    myConnString = "server=" & dbserver & ";" & "user id=" & dbuser & ";" & "password=" & dbpass & ";" & "database=rtadmin"
    Dim myCommand As New MySqlCommand
    Dim myAdapter As New MySqlDataAdapter
    Dim myData As New DataTable
    Dim myDataReader As New MySqlDataReader
    Dim query As String

    myCommand.Parameters.Add(New MySqlParameter("?Username", login_usr_txt.Text))
    myCommand.Parameters.Add(New MySqlParameter("?Password", login_pass_txt.Text))
    query = "select * from users where user = ?Username and passwd = ?Password"
    conn.ConnectionString = myConnString
    Try
        conn.Open()
        Try
            myCommand.Connection = conn
            myCommand.CommandText = query
            myAdapter.SelectCommand = myCommand
            myDataReader = myCommand.ExecuteReader
            If myDataReader.HasRows() Then
                MessageBox.Show("You've been logged in.", "RT Live! Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Catch ex As Exception

        End Try
    Catch ex As Exception

    End Try
End Function    

The function is not yet complete, there are a few other things that need to be done before launching the application, since I'm using a MessageBox to display the result of the login attempt.

The error that I'm getting is the following:

Error 1 'MySql.Data.MySqlClient.MySqlDataReader.Friend Sub New(cmd As MySql.Data.MySqlClient.MySqlCommand, statement As MySql.Data.MySqlClient.PreparableStatement, behavior As System.Data.CommandBehavior)' is not accessible in this context because it is 'Friend'. C:\Users\Mario\documents\visual studio 2010\Projects\Remote Techs Live!\Remote Techs Live!\Login.vb 43 13 Remote Techs Live!

Any ideas?

Thanks.

A: 

You could try the .AddWithValue instead of .Add.

For example:

cmd.Parameters.AddWithValue("?Username", login_usr_txt.Text)
John M
Actually, that is correct as it is for what I can tell. The error comes from this line:Dim myDataReader As New MySqlDataReaderwhere myDataReader is marked in blue and generates the mentioned error.
TuxMeister
+1  A: 

It makes no sense to try to create a MySqlDataReader and then throw it away!

First you do this to attempt to create a reader:

    Dim myDataReader As New MySqlDataReader

Then later you attempt to throw that away when you do this:

    myDataReader = myCommand.ExecuteReader

Just remove the New from your initial declaration. I suspect that the constructor for the MySqlDataReader is not publicly accessible.

Chris Dunaway
Many thanks. That worked, I never realised that new.
TuxMeister