2016-06-30 4 views
-1

Ich weiß, das ist Klartext und nicht sicher, aber ich versuche zu lernen, wie man ein Login-Formular mit dem WPF C# .net-Framework machen. Dies ist ein Vererbungsproblem, aber ich bin mir nicht sicher, wie ich die Daten von der Datenbank zum Rest der Methode auf der Unterseite bringen soll (die ich auskommentiert habe, um Ihnen zu zeigen, was ich versuche).Wie können Sie Daten innerhalb einer Methode in eine äußere Methode für einen Return-Aufruf ziehen?

private bool validateUser(string username, string password) 
    { 
     if (UserName != "" & Password != "") 
     { 
      server = "localhost"; 
      database = "test"; 
      uid = "username"; 
      password = "password"; 
      string connectionString; 
      connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 
      MySqlConnection con = new MySqlConnection(connectionString); 
      // MySqlConnection con = new MySqlConnection(@"Data Source=USER;Initial Catalog=admin;Integrated Security=True"); 
      MySqlDataAdapter sda = new MySqlDataAdapter("SELECT COUNT(*) FROM table1 WHERE username='" + UserName + "' AND password='" + Password + "'", con); 
      /* in above line the program is selecting the whole data from table and the matching it with the user name and password provided by user. */ 
      DataTable dt = new DataTable(); 
      sda.Fill(dt); 
      if (dt.Rows[0][0].ToString() == "1") 
      { 
       /* I have made a new page called home page. If the user is successfully authenticated then the form will be moved to the next form */ 
       User validatedUser = userList.FirstOrDefault(user => user.UserName.Equals(username) && user.Password.Equals(password));//I need this to be returned to the main method so I can make this work validateUser 
       return validatedUser != null;//Here is the return that is being called for the main method validateUser 
       MessageBox.Show("connected"); 
      } 
      else 
       MessageBox.Show("Invalid username or password"); 
      } 

      // we need to try and get the database to this method 
     //User validatedUser = userList.FirstOrDefault(user => user.UserName.Equals(username) && user.Password.Equals(password)); 
     //return validatedUser != null; //This is where it works, but doesn't pull from the processes above because of inheritance 

    } 
+1

Sie fragen, wie eine Variable außerhalb der 'erklären if' blockieren? Tun Sie das, indem Sie es dort deklarieren. Wenn das nicht das ist, was Sie fragen, versuchen Sie es bitte ausführlicher zu erklären, weil "die Datenbank auf diese Methode" nicht gut für mich analysiert. Und was meinst du mit "Vererbung"? Deklarieren Sie alle Ihre lokalen Variablen als Klassenmitglieder? Warum? Warum würdest du das tun? –

+0

Also muss ich es als String außerhalb des if-Blocks platzieren. –

+0

Es überprüft die Eingabezeichenfolgen und gibt sie an die Methode zurück, wenn null dann einen Fehler macht –

Antwort

0

Klingt wie Ihr Problem war:

private bool validateUser(string username, string password) 
{ 
    if (UserName != "" & Password != "") 
    { 
     server = "localhost"; 
     database = "test"; 
     uid = "username"; 
     password = "password"; 
     string connectionString; 
     connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; 
     MySqlConnection con = new MySqlConnection(connectionString); 
     // MySqlConnection con = new MySqlConnection(@"Data Source=USER;Initial Catalog=admin;Integrated Security=True"); 
     MySqlDataAdapter sda = new MySqlDataAdapter("SELECT COUNT(*) FROM table1 WHERE username='" + UserName + "' AND password='" + Password + "'", con); 
     /* in above line the program is selecting the whole data from table and the matching it with the user name and password provided by user. */ 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 
     if (dt.Rows[0][0].ToString() == "1") 
     { 

      MessageBox.Show("connected"); 
     } 
     else 
      MessageBox.Show("Invalid username or password"); 
     } 

     // we need to try and get the database to this method 
    User validatedUser = userList.FirstOrDefault(user => user.UserName.Equals(UserName) && user.Password.Equals(Password)); 
    return validatedUser != null; //This is where it works, but doesn't pull from the processes above because of inheritance 

} 
+0

Wie wäre es zu erklären, was das Problem war. – Drew

+0

Immer wenn ich die Methode hochzog, kam sie immer null zurück. Der validierte Benutzer zeigt nur bestimmte Symbole für bestimmte Benutzer an, wenn sie ihre Anmeldeinformationen eingeben. –

Verwandte Themen