Laden...

DATASET WPF #c

Letzter Beitrag vor 2 Jahren 7 Posts 591 Views
DATASET WPF #c

Hallo Community,
ich habe ein Problem mit dem unten aufgeführten Code. Die Datatable wird aus der Datenbank gefüllt und die Foreach-Schleife soll nun die zwei Spalten durchlaufen. Klappt soweit auch ganz gut da sich alle Eintrage wie gewünscht in der Datatable befinden.
Wenn ich nun in die If-Schleife komme dann lande ich nach dem Clickevent immer in der else-Schleife und die Msg-Box "Klappt nicht" springt an.
Was läuft falsch? hat jemand eine Idee?


//Klick auf den LoginButton
        private void LOGIN(object sender, RoutedEventArgs e)
        {
            MitarbeiterportaldatenbankTableAdapters.BenutzerdatenTableAdapter adapter = new MitarbeiterportaldatenbankTableAdapters.BenutzerdatenTableAdapter();

            DataTable table = adapter.GetData();
            string name = null;
            string pass =null;


            foreach (DataRow datarow in table.Rows)
            {
                name= datarow["Benutzername"].ToString();
                pass = datarow["Passwort"].ToString();
            }

            if (name.Contains(Txt_Benutzername.Text) && pass.Contains(Txt_Passwort.Text))
            {
                MessageBox.Show("Klappt");
            }
            else
            {
                MessageBox.Show("Klappt nicht");
            }
        }

Ich verstehe nicht ganz was du vorhast, aber vermutlich dies:


            string name = null;
            string pass =null;


            foreach (DataRow datarow in table.Rows)
            {
                name= datarow["Benutzername"].ToString();
                pass = datarow["Passwort"].ToString();
            
               if (name.Contains(Txt_Benutzername.Text) && pass.Contains(Txt_Passwort.Text))
               {
                   MessageBox.Show("Klappt");
               }
               else
               {
                   MessageBox.Show("Klappt nicht");
               }
            }

In WPF arbeitet man mit MVVM. Verwendest Du kein WPF, dann wird Dein Code leider mehr Workarounds haben als sinnvollen Code.
[Artikel] MVVM und DataBinding

PS: Es gibt keine if-Schleifen.

Also der Code soll die Eingaben der beiden Textboxen mit den Spalten der Datatable abgleichen. Bei Übereinstimmung, Kriterium die Eingaben aus den Textboxen müssen in einer Zeile in den beiden Spalten der Datatable übereinstimmen. Dann soll sich ein weiteres Fenster öffnen oder bei falscher Eingabe eben nicht. Da soll dann irgendwas anderes kommen wie zum Beispiel "Benutzname oder Passwort falsch.".. liegt es an der if abfrage mit "Contains"?

Hallo,

Contains ist wohl die falsche Methode, um Namen und Passwort abzufragen...
Du solltest auf exakte Gleichheit abfragen (beim Namen kannst du evtl. Groß-/Kleinschreibung ignorieren).

OK danke für die Hinweise.

.. und sei Dir bewusst, dass man - sogar gesetzlich, sowohl EU- wie auch nach deutschen Gesetzen - keine Passwörter im Klartext speichern darf ( DSGVO Artikel 32 )
Man speichert Passwörter gesalzen (Salt_(Kryptologie)) mit einem sicheren 1-Wege-Hashverfahren (zB SHA-512)
Diesen Hash verwendet man dann auch für den Abgleich. Aber niemals das rohe Passwort.