2016-10-04 4 views
1

Ich arbeite an einer Login-Funktion in Visual Studio, ich habe meinen Code unten aufgeführt, um eine Verbindung mit der Datenbank herzustellen. Ich kann nicht herausfinden, was ich falsch mache hier, aber ich habe den Fehler databaseConn.db_connection() is a method which is not valid in the given context.Fehler beim Verbinden mit der Datenbank in 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"); 
      } 

     } 
    } 
} 

Antwort

3

definieren Sie haben die db_connection als eine statische Funktion, nicht eine Eigenschaft, so dass Sie nicht db_connection.Open() verwenden können.

können Sie versuchen, Ihre db_connection zu modifizieren, um die connection object zurückzukehren, oder speichern Sie sie als statische Eigenschaft

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; 
} 

Benutzer:

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

Dank! Das funktioniert. Jetzt an SQL-Fehlern zu arbeiten –

+0

Für die SQL-Fehler, beziehen Sie sich bitte auf diese: http://Stackoverflow.com/a/652999/1050927, die Verwendung von Parameter kann Ihnen helfen, SQL Injection zu verhindern. Wenn Sie darauf bestehen, reines SQL zu verwenden, versuchen Sie es mit SELECT 'FROM users WHERE username =' "+ username +" '" – Prisoner

+0

Ah, es gibt also eine PDO-ähnliche Alternative. (Wird für PHP verwendet) –

Verwandte Themen