[Sql]Problem bei reader

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Schlammy.

    [Sql]Problem bei reader

    Hallo Leute ich bin dabei ein Programm zu entwickeln womit man Englisch-Deutsch Karteikarten lesen bzw lernen kann. Es basiert auf MySQL indem 2 Tabellen vorhanden sind: dbo.Accounts sowie dbo.Vokabeln. Account erstellung sowie abfrage ob Account vorhanden ist geht nur wenn ich den Punktestand ( in Table as Integer definiert ) Abfragen will, klapp dies nicht

    Die Connection ist aufrecht liegt also nicht daran :S

    VB.NET-Quellcode

    1. ...
    2. cmd.Connection = con
    3. cmd.CommandText = "SELECT Punkte as Punktestand FROM dbo.Accounts WHERE _Username = '" & Label2.Text.ToString & "' ;"
    4. Dim ergebnis As Integer = -7 ' HIER WIRD AUF -7 STANDARTERT GESETZT!!!
    5. Dim ireader = cmd.ExecuteReader ' HIER FEHLER: ergenis IST IMMER -7 !!!!
    6. While ireader.Read
    7. ergebnis = CInt(ireader("Punktestand"))
    8. End While
    9. ireader.Close()
    10. curAufgabe = ergebnis
    11. ...
    Was passiert wenn du im Debugger durchsteppst?
    Vermutlich wird ergebnis kein neuer Wert zugewiesen.

    Werte bitte nicht in Controls speichern. Dafür gibts Variablen.

    Bitte verwende DB-Parameter:
    [VB.NET] Mit Parametern in Datenbank schreiben
    [VB.NET] Tipp & Trick: DbParameter

    Vielleicht liegt auch hier der Hund begraben.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Dann ergab dein SELECT keinen Treffer. Kann man MySql Abfragen in einem Tool testen? Musst schauen ob es da was gibt.
    Schau dir das trotzdem mit den DB-Paramatern an.
    Bei diesem select kann mans noch lesen. Jedoch wenn diese komplexer werden wirst du auf gut österreichisch zum "Schwammerl".

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Ich habe den Query erfolgreich getestet und er hat mir auch den Punktestand ( Punkte ) angezeigt Nur wenn ich diesen Querry bei vb mache funkt er nicht bzw der reader liest nicht


    Brainfuck-Quellcode

    1. Punktestand
    2. -----------
    3. 0
    4. (1 Zeile(n) betroffen)


    Nachdem ich den Punktestand in der Datenbank geändert habe auf 5 und neu Abgefragt habe mit demselben Query:

    Brainfuck-Quellcode

    1. Punktestand
    2. -----------
    3. 5
    4. (1 Zeile(n) betroffen)
    Von MSSQL:
    use Developer6
    SELECT Punkte as Punktestand FROM dbo.Accounts WHERE _Username = 'lol'
    Von VB:

    label2.text = "lol" und als account in der datenbank vorhanden
    cmd.CommandText = "SELECT Punkte as Punktestand FROM dbo.Accounts WHERE _Username = '" & Label2.Text & "' ;"

    VB.NET-Quellcode

    1. cmd.CommandText = "SELECT Punkte as Punktestand FROM dbo.Accounts WHERE _Username = '" & Label2.Text & "' ;"
    2. Debug.Print(cmd.CommandText)


    Dann haste beim Debuggen im Ausgabefenster was stehen.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    Schlammy schrieb:

    SELECT Punkte as Punktestand FROM dbo.Accounts WHERE _Username = 'Label2' ;

    Der Anfang jeder Katastrophe ist eine beschissene Vermutung!

    Tja, dann steht in Label2 wohl "Label2". Vermutlich läuft deine SQL Abfrage, BEVOR du den Wert in Label2 eingetragen hast. Wobei wie Fichz schon mehrmals schrieb, es völlig bescheuert ist (Fichz war höflicher, ich ziehe es vor einen Fisch "Fisch" zu nennen), "Werte" in Controls zu speichern. Für sowas gibts Variablen (String), die nur das können (zb das Speichern eines Strings)
    Das Problem mit dem Text habe ich gefixt so aber er findet immernochnicht den inhalt von punktestand

    Debugprint:
    SELECT Punkte as Punktestand FROM dbo.Accounts WHERE _Username = 'Lol' ;
    Habe auch eine Varible gesetzt extra für den namen ( aus dem Label )

    VB.NET-Quellcode

    1. Dim myuser As String = Label2.Text

    logischerweise beim Formload event ganz oben.

    Und die Abfrage dementsprechen geändert

    VB.NET-Quellcode

    1. cmd.CommandText = "SELECT Punkte as Punktestand FROM dbo.Accounts WHERE _Username = '" & myuser & "' ;"
    Ja die Rechtschreibung ( groß und kleinschreibung ) aber MySQL erkennt doch nur den Inhalt oder nicht? Bei MSSQL abfrage ist es egal ob der name Groß oder klein ist
    "Lol" heißt der account genau aber mit "lol" kann ich ihn auch erreichen ( MSSQL)



    Edit:
    Groß/Kleinschreibung ignoriert SQL
    Fehler behoben
    Quellcode:

    VB.NET-Quellcode

    1. cmd.Connection = con
    2. cmd.CommandText = "SELECT Punkte as Punktestand FROM dbo.Accounts WHERE _Username = '" & myuser & "' ;"
    3. Debug.Print(cmd.CommandText)
    4. Dim ergebnis As Integer = -7 ' HIER WIRD AUF -7 STANDARTERT GESETZT!!!
    5. Dim ireader = cmd.ExecuteReader ' HIER FEHLER: ergenis IST IMMER -7 !!!!
    6. While ireader.Read
    7. ergebnis = CInt(ireader("Punktestand"))
    8. End While
    9. ireader.Close()

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Schlammy“ ()