2010-05-12 67 views
1

我在VB.NET中有一個函數,它在啓動主應用程序之前向MySQL數據庫驗證用戶身份。下面是函數的代碼:MySqlDataReader在構建時給出錯誤

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  

的功能還沒有完成,有需要啓動應用程序之前完成,因爲我使用一個MessageBox顯示的結果一些其他的東西登錄嘗試。

是我得到的錯誤是:

錯誤1「MySql.Data.MySqlClient.MySqlDataReader.Friend子新(CMD作爲MySql.Data.MySqlClient.MySqlCommand,聲明例如MySQL。 Data.MySqlClient.PreparableStatement,behavior As System.Data.CommandBehavior)'在此上下文中不可訪問,因爲它是'Friend'。 C:\ Users \ Mario \ documents \ visual studio 2010 \ Projects \ Remote Techs Live!\ Remote Techs Live!\ Login.vb 43 13 Remote Techs Live!

任何想法?

回答

1

這是沒有意義的嘗試創建了MySqlDataReader,然後把它扔掉!

首先,你這樣做是爲了試圖創建一個讀者:

Dim myDataReader As New MySqlDataReader 

再後來試圖把那個離開時,你這樣做:

myDataReader = myCommand.ExecuteReader 

只需從最初的聲明中取出新。我懷疑MySqlDataReader的構造函數是不公開的。

+0

非常感謝。這工作,我從來沒有意識到新的。 – TuxMeister 2010-05-12 14:27:02

0

您可以嘗試.AddWithValue而不是.Add。

例如:

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

其實,這是正確的,因爲它是我所知道的。錯誤來自以下行: Dim myDataReader As New MySqlDataReader 其中myDataReader標記爲藍色並生成所述錯誤。 – TuxMeister 2010-05-12 14:12:36