2016-10-04 66 views
1

我正在開發Visual Studio中的登錄功能,下面列出了我的代碼以連接到數據庫。我想不通我做錯了什麼在這裏,但我得到的錯誤databaseConn.db_connection() is a method which is not valid in the given context.在VB中連接數據庫時出錯

using MySql.Data.MySqlClient; 

namespace Connection 
{ 
    static class databaseConn 
    { 
     static public void db_connection() 
     { 
      try 
      { 
       var conn = "Server=myhomeserver.net;Database=addonInstaller;Uid=root;Pwd=g278535814;"; 
       var connect = new MySqlConnection(conn); 
       connect.Open(); 
      } 
      catch (MySqlException e) 
      { 
       MessageBox.Show("Could not Connect to Server"); 
      } 
     } 
    } 

} 
namespace UserFunctions 
{ 
    static class Users 
    { 

     static public void LoginFunc(String username, String password) 
     { 

      CheckUsername(username, password); 
     } 
     static public void CheckUsername(String username, String password) 
     { 
      Connection.databaseConn.db_connection(); 
      MySqlCommand cmd = new MySqlCommand(); 
      cmd.CommandText = "SELECT * FROM users WHERE username=" + username + ""; 
      cmd.Connection = Connection.databaseConn.db_connection.Open(); //This is my error area. 
      MySqlDataReader login = cmd.ExecuteReader(); 
      if (login.Read()) 
      { 
       MessageBox.Show("Continue to Login"); 
      } 
      else 
      { 
       MessageBox.Show("Username Not Found"); 
      } 

     } 
    } 
} 

回答

3

你必須定義db_connection爲靜態函數,而不是一個屬性,因此不能使用db_connection.Open()

你可以嘗試修改您的db_connection返回connection object,或將其存儲爲靜態屬性

databaseConn

static public MySqlConnection db_connection() 
{ 
    try 
    { 
     var conn = "Server=myhomeserver.net;Database=addonInstaller;Uid=root;Pwd=g278535814;"; 
     var connect = new MySqlConnection(conn); 
     connect.Open(); 
     return connect; 
    } 
    catch (MySqlException e) 
    { 
     MessageBox.Show("Could not Connect to Server"); 
    } 

    return null; 
} 

用戶

var conn = Connection.databaseConn.db_connection(); 
if (conn != null) 
{ 
    MySqlCommand cmd = new MySqlCommand(); 
    cmd.CommandText = "SELECT * FROM users WHERE username=" + username + ""; 
    cmd.Connection = conn; 
    MySqlDataReader login = cmd.ExecuteReader(); 
    ... ... 
+0

謝謝!這樣可行。現在要處理SQL錯誤 –

+0

對於SQL錯誤,請參考此:http://stackoverflow.com/a/652999/1050927,使用參數可以幫助您防止SQL注入。如果你堅持使用普通的SQL,試試這個'SELECT * FROM users WHERE username ='「+ username +」'「'' – Prisoner

+0

啊,所以有一個PDO就像另一種方式(用於PHP) –