Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
DATASET WPF #c
Burns83
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

DATASET WPF #c

beantworten | zitieren | melden

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");
            }
        }
private Nachricht | Beiträge des Benutzers
jbrown
myCSharp.de - Member



Dabei seit:
Beiträge: 17

beantworten | zitieren | melden

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");
               }
            }
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.389

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Burns83
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

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"?
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.642

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers
Burns83
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

OK danke für die Hinweise.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.389

beantworten | zitieren | melden

.. 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.
private Nachricht | Beiträge des Benutzers