代码之家  ›  专栏  ›  技术社区  ›  TuxMeister

mysqldatareader生成时出错

  •  1
  • TuxMeister  · 技术社区  · 14 年前

    我在vb.net中有一个函数,它在启动主应用程序之前对用户的mysql数据库进行身份验证。功能代码如下:

        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    
    

    函数还没有完成,在启动应用程序之前还需要做一些其他的事情,因为我正在使用一个消息框来显示登录尝试的结果。

    我得到的错误如下:

    错误1“mysql.data.mysqlclient.mysqldatareader.friend sub new(cmd为mysql.data.mysqlclient.mysqlcommand,statement为mysql.data.mysqlclient.preparablestatement,behavior为system.data.commandbehavior)”在此上下文中不可访问,因为它是“friend”。C:\Users\Mario\Documents\Visual Studio 2010\Projects\Remote Techs Live!\远程技术现场!\ login.vb 43 13远程技术现场!

    有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Chris Dunaway    14 年前

    尝试创建一个mysqldatareader然后扔掉它是没有意义的!

    首先尝试创建读卡器:

        Dim myDataReader As New MySqlDataReader
    

    然后,当你这样做的时候,你试图扔掉它:

        myDataReader = myCommand.ExecuteReader
    

    只需从初始声明中删除新的。我怀疑mysqldatareader的构造函数不可公开访问。

        2
  •  0
  •   John M    14 年前

    您可以尝试.addWithValue而不是.add。

    例如:

    cmd.Parameters.AddWithValue("?Username", login_usr_txt.Text)