Daten Abfrage



  • Hi Leute bin relativ neu in der Welt der Programmierung deswegen brauche ich bei diesem Thema eure Hilfe. Es geht um ein einfaches Programm das die Userdaten aus einer Datenbank auslesen soll z.b.: Benutzer Passwort Adminrechte
    Admin admin ja
    User user nein
    Wenn ich mich nun mit dem Admin Konto anmelde, soll das Programm die Adminrechte auslesn bei ja = MsgBox "Hallo Admin"
    nein wie bei dem Benutzer User soll nur "Hallo" in der MsgBox stehn

    Villeicht kann mir jemand Helfen

    ­čśĽ ­čśâ



  • Nee, so einfach ist das alles nicht. Musst dich erstmal selber viel intensiver einlesen.



  • bin relativ neu in der Welt der Programmierung

    Was heisst das?
    Was kannst du schon?

    Davon abgesehen: du schreibst was du machen m├Âchtest. Sch├Ân, dann mach es!
    Du stellst n├Ąmlich keine Frage die man beantworten k├Ânnte. Einfach nur so "ich brauch mal Hilfe" -- was erwartest du dir jetzt? Dass dir jemand Schritt f├╝r Schritt erkl├Ąrt was du dazu machen musst? Und das noch dazu ohne deinen Kenntnisstand einsch├Ątzen zu k├Ânnen, also ohne zu wissen auf welchem Level er es erkl├Ąren muss?

    Damit wirst du vermutlich wenig Gl├╝ck haben.



  • Ok mein Ersten Versuch mein Problem zu Schildern ging wohl daneben, aber die richtige Formulierung zu finden ist etwas Schwierig. Also versuche ich es nochmal.

    Mein Wissensstand bzw. mein k├Ânnen liegt ca. bei 30 Prozent. Ich habe eine kleine Loginform erstellt, diese Loginform ist wiederum mit einer Datenbank verbunden. Die Loginform selbst ist relativ einfach aufgebaut,
    (TextBox1 = Benutzername; TextBox2 = Passwort) + zwei Button;
    (Button1 = Login + Button2 = Beenden).
    Die Loginform "Momentan" wie sie jetzt ist Fragt zwei Variablen von der Datenbank ab erste Variable; (Benutzername) + zweite Variable (Passwort), wenn die Eingabe in TextBox1 + Textbox2 mit den Eingetragenen Benutzern in der Datenbank ├╝bereinstimmt kommt eine MsgBox mit dem Text "Hallo User". Hier f├Ąngt aber auch schon mein Problem an den jeder User ist nicht gleich, z.B. User1 soll Adminrechte bekommen User2 nicht. Ich trage nun in meiner Datenbank bei User1 unter der Spalte Adminrechte "JA" ein. Das Programm fragt Aber nur zwei Variable ab und wei├č nicht das User1 Adminrechte hat, also kommt nur wieder die MsgBox mit "Hallo User" es sollte aber dieses mal durch die Adminrechte "Hallo Admin" in der MsgBox stehen. User2 bekommt keine Adminrechte also trage ich in die Datenbank unter der Spalte Adminrechte "NEIN" ein, und der Text soll bei User2 ganz normal "Hallo User" lauten da er ja keine Adminrechte wie User1 hat.

    Meine Frage nun; "Wie beziehe ich Variable drei bzw. Adminrechte in die Loginform ein"?

    [code]
    Private Sub Login_Click(sender As Object, e As EventArgs) Handles Login.Click
    Dim login = Me.TestTableAdapter1.TestString(txtUser.Text, txtPasswort.Text)
    Dim adminrechte = Me.TestTableAdapter1.AdminString("Ja")

    If login & adminrechte Is Nothing Then
    {
    TestTableAdapter1.AdminString & MsgBox("User oder Passwort falsch! Bitte ├╝berpr├╝fen Sie Ihre Eingabe!", MsgBoxStyle.Critical, "Fehler")
    }
    Else
    MsgBox("Hallo", MsgBoxStyle.Information, "Hallo")

    End If

    End Sub
    End Class

    Zur Hilfe und zum leichtern Verst├Ąndnis der Code Ausschnitt.
    Schon mal Danke hoffe ihr versteht mich jetzt besser.


  • Mod

    Progmafi schrieb:

    Mein Wissensstand bzw. mein k├Ânnen liegt ca. bei 30 Prozent.

    30% von was?

    Hier f├Ąngt aber auch schon mein Problem an den jeder User ist nicht gleich, z.B. User1 soll Adminrechte bekommen User2 nicht. Ich trage nun in meiner Datenbank bei User1 unter der Spalte Adminrechte "JA" ein. Das Programm fragt Aber nur zwei Variable ab und wei├č nicht das User1 Adminrechte hat, also kommt nur wieder die MsgBox mit "Hallo User" es sollte aber dieses mal durch die Adminrechte "Hallo Admin" in der MsgBox stehen. User2 bekommt keine Adminrechte also trage ich in die Datenbank unter der Spalte Adminrechte "NEIN" ein, und der Text soll bei User2 ganz normal "Hallo User" lauten da er ja keine Adminrechte wie User1 hat.

    Was hindert dich, diese Information aus der Datenbank zu holen?

    PS: So allgemein ist dir schon klar, dass man niemals Passw├Ârter im Klartext speichert?



  • Ja es ist mir klar das man Passw├Ârter verschl├╝sselt speichert es ist auch nur ein Programm zum ├ťben. Was mich daran hindert ist das ich nicht wei├č wie ich die dritte Variable mit einbinde in den Quelltext "OBEN angef├╝hrt". Mit einem normalen If Befehl funkt es nicht :(.


  • Mod

    Progmafi schrieb:

    Was mich daran hindert ist das ich nicht wei├č wie ich die dritte Variable mit einbinde in den Quelltext "OBEN angef├╝hrt". Mit einem normalen If Befehl funkt es nicht :(.

    M├Âchtest du damit sagen, dass dein Code, wie oben ausgeschrieben, nicht funktioniert? Vielleicht solltest du dir mal die Rangfolge der Operatoren in VB.net angucken. Oder ├╝berhaupt logische Verkn├╝pfungen. Ich hatte den Code bisher f├╝r Pseudocode gehalten.

    In der Programmierung muss man sich genau ausdr├╝cken, sowohl wenn man mit dem Computer spricht, als auch wenn man mit anderen Programmierern spricht. Viele Leute hier haben Schwierigkeiten, zu verstehen, was du ├╝berhaupt m├Âchtest. Der Computer wahrscheinlich ebenso. Du musst von jedem Zeichen in deinem Programm genau wissen, wo und warum du es setzt. Zuf├Ąllig irgendwelche Zeichen im Code einf├╝gen, bis man keine Syntaxfehler mehr bekommt, f├╝hrt nie Code der tut, was man m├Âchte.
    Ebenso ist "funktioniert nicht" oder "Hilfe!" nicht hilfreich bei der Kommunikation mit anderen Programmierern. Wenn du Hilfe m├Âchtest, musst du genau beschreiben, was du erreichen m├Âchtest (nicht wie du etwas erreichen m├Âchtest!), was du getan hast, was du erwartest, was stattdessen passiert. Codebeispiele sollten auf das wesentliche reduziert sein, aber gleichzeitig vollst├Ąndig genug, dass man sie einfach kopieren und ausf├╝hren kann, ohne sie erg├Ąnzen zu m├╝ssen. Und ganz wichtig ist, dass man pr├╝ft, ob das Problem in dem reduzierten Codebeispiel ├╝berhaupt noch auftritt. Ein Codebeispiel, das blo├č so ├Ąhnlich aussieht wie der Problemcode, am besten noch ungetestet, unvollst├Ąndig und voller anderer Fehler, kann man sich auch gleich sparen.



  • Mir w├Ąre auch neu dass man {} Bl├Âcke in VB .NET verwenden kann.


  • Mod

    hustbaer schrieb:

    Mir w├Ąre auch neu dass man {} Bl├Âcke in VB .NET verwenden kann.

    Das soll aber schon VB.NET sein, oder? Ich war mir nicht so sicher, eben wegen der Klammern und komischen Operatoren, kenne aber auch nicht alle Programmiersprachen und Dialekte auf der Welt. Ich nahm dann zun├Ąchst an, dass es Pseudocode sein sollte, aber anscheinend ist das ja ernst gemeint.



  • Ich m├Âchte ja nur wissen wie mein Programm aus der Datenbank Variable 3 auslesen kann, da komme ich nicht weiter. Es soll bei Adminrechte JA oder NEIN auslesen k├Ânnen und auch verwenden aber ich wei├č nicht wie ich den Code schreiben muss das es JA und NEIN Verwenden kann.

    Kann mir einer Helfen dabei?

    PS: Der Blocke ist extra unter {} um ihn nicht zu debuggen wegen der fehler suche!



  • @Progmafi
    Du wirst die TestTableAdapter1 Klasse anpassen m├╝ssen. Die hast du uns aber bis jetzt nicht gezeigt.
    Wie das geht kann ich dir nicht genau sagen, ich verwende nie TableAdapter (ich schreib die SELECTs einfach selbst).

    PS: Der Blocke ist extra unter {} um ihn nicht zu debuggen wegen der fehler suche!

    H├Â?



  • hustbaer schrieb:

    PS: Der Blocke ist extra unter {} um ihn nicht zu debuggen wegen der fehler suche!

    H├Â?

    Kenne ich in VB jetzt auch nur in verbindung mit " with " und als collection initializer. ­čś«



  • [quote="hustbaer"]@Progmafi
    Du wirst die TestTableAdapter1 Klasse anpassen m├╝ssen. Die hast du uns aber bis jetzt nicht gezeigt.
    Wie das geht kann ich dir nicht genau sagen, ich verwende nie TableAdapter (ich schreib die SELECTs einfach selbst).

    [quote]PS: Der Blocke ist extra unter {} um ihn nicht zu debuggen wegen der fehler suche![/quote]
    H├Â?[/quote]

    Oke Also das Select des TestTableAdapter bzw. des Adminstrings sieht so aus

    SELECT COUNT() AS Result, Adminrechte AS Adminr
    FROM Test
    GROUP BY Adminrechte
    HAVING (COUNT(
    ) = 1) AND (Adminrechte = ?).

    mehr hab ich nicht ­čś«

    Ich glaube der Fehler muss hier ligen:

    [code]

    Private Sub Login_Click(sender As Object, e As EventArgs) Handles Login.Click
    Dim login = Me.TestTableAdapter1.TestString(txtUser.Text, txtPasswort.Text)
    Dim adminrechte = Me.TestTableAdapter1.AdminString("Ja")

    If login & adminrechte Is Nothing Then

    TestTableAdapter1.AdminString & MsgBox("User oder Passwort falsch! Bitte ├╝berpr├╝fen Sie Ihre Eingabe!", MsgBoxStyle.Critical, "Fehler")

    Else
    MsgBox("Hallo", MsgBoxStyle.Information, "Hallo")

    End If

    End Sub
    End Class

    Ps: ICh lerne viel mit B├╝chern und vor allem Youtube und da hat einer {} diese Bl├Âcke gemacht um die Zeile die er damit einbindet nich zu Debuggen



  • SELECT Adminrechte
    FROM Test
    WHERE Benutzername LIKE 'Programfi' AND PasswortHash LIKE 'md5-checksumOderÄhnlichesHauptsacheNichtDasPasswortAlsKlartext'

    Wenn bei dem oben genannten Select kein Wert heraus kommt -> den Benutzer gibt es nicht

    Wenn genau ein Wert raus kommt -> dann solltest du ja als Ergebnis des Selects direkt den Wert haben, ob der Benutzer AdminRechte hat oder nicht

    Wenn mehr als ein Datensatz zur├╝ck kommt -> dann solltest du evtl. noch UNIQUE constraints auf die Spalten Benutzername setzen, so dass es tats├Ąchlich nur einen Benutzer mit diesem Namen gibt.

    Die Spaltennamen "Benutzername", "PasswortHash" sind nat├╝rlich nur geraten ... du hast uns dein restliches DB-Schema ja nicht verraten


Log in to reply