Laden...

DATASET WPF #c

Erstellt von Burns83 vor einem Jahr Letzter Beitrag vor einem Jahr 473 Views
B
Burns83 Themenstarter:in
3 Beiträge seit 2021
vor einem Jahr
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");
            }
        }

J
18 Beiträge seit 2021
vor einem Jahr

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

16.807 Beiträge seit 2008
vor einem Jahr

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.

B
Burns83 Themenstarter:in
3 Beiträge seit 2021
vor einem Jahr

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"?

4.931 Beiträge seit 2008
vor einem Jahr

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).

B
Burns83 Themenstarter:in
3 Beiträge seit 2021
vor einem Jahr

OK danke für die Hinweise.

16.807 Beiträge seit 2008
vor einem Jahr

.. 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.