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


Anmelden zum Antworten