Weitere SQLite Abfrage in einer While Schleife

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von TiTo.

    Weitere SQLite Abfrage in einer While Schleife

    Hallo liebe Community,

    ich habe wieder ein Problem...

    Ich habe eine SQlite Abfrage in einer While Schleife darin muss ich noch eine Abfrage starten um den Namen des Users rauszufinden.

    VB.NET-Quellcode

    1. command.CommandText = "SELECT user_id, tag, datum, beginn, ende, pause, dauer FROM zeiten"
    2. Dim SQLreader2 As SQLiteDataReader = command.ExecuteReader()
    3. ListView1.Items.Clear() 'Listview leeren
    4. While SQLreader2.Read() 'Alle Arbeitszeiten Abfragen
    5. command.CommandText = "SELECT name FROM user WHERE id='" + SQLreader2(0) + "'" 'Mitarbeitername rausfinden anhand der "user_id" von der Tabelle "zeiten"
    6. Dim reader As SQLiteDataReader = command.ExecuteReader()
    7. Main.lvwAddItem(ListView1, reader(0).ToString(), SQLreader2(1), SQLreader2(2), SQLreader2(3), SQLreader2(4), SQLreader2(5), SQLreader2(6))
    8. End While
    9. command.Dispose()


    Er gibt mir aber nichts aus. Also schließe ich daraus, dass ich irgendwo ein Fehler habe.
    Was kann der Fehler sein?

    Gruß
    Dennis
    Habe ich gemacht, klappt auch nicht? ?(

    VB.NET-Quellcode

    1. While SQLreader2.Read() 'Alle Arbeitszeiten Abfragen
    2. Dim command2 As SQLiteCommand
    3. command2 = connect.CreateCommand
    4. command2.Connection = connect
    5. command2.CommandText = "SELECT name FROM user WHERE id='" + SQLreader2(0) + "'" 'Mitarbeitername rausfinden anhand der "user_id" von der Tabelle "zeiten"
    6. Dim reader As SQLiteDataReader = command2.ExecuteReader()
    7. Main.lvwAddItem(ListView1, reader(0).ToString(), SQLreader2(1), SQLreader2(2), SQLreader2(3), SQLreader2(4), SQLreader2(5), SQLreader2(6))
    8. End While
    Jetzt solltest du noch deinen Query anpassen, du kannst mit einem Query auch mehrere Tabellen ansprechen.

    SQL-Abfrage

    1. SELECT zeiten.user_id, user.name, zeiten.tag, zeiten.datum, zeiten.beginn, zeiten.ende, zeiten.pause, zeiten.dauer FROM zeiten, user WHERE zeiten.user_id = user.user_id;


    Weiß jetzt nicht ob das so richtig ist, aber im Groben sollte es so funktionieren. Auf die schnelle mal getestet: s1.directupload.net/images/121114/zl8tbbl4.png (nane = name :p).

    techrepublic.com/article/sql-b…y-multiple-tables/1050307
    Leute....
    Ich bin so dumm :pinch:

    VB.NET-Quellcode

    1. command.CommandText = "SELECT zeiten.user_id, user.name, zeiten.tag, zeiten.datum, zeiten.beginn, zeiten.ende, zeiten.pause, zeiten.dauer FROM zeiten, user WHERE zeiten.user_id = user.id"
    2. Dim SQLreader2 As SQLiteDataReader = command.ExecuteReader()
    3. ListView1.Items.Clear()
    4. While SQLreader2.Read()
    5. Main.lvwAddItem(ListView1, SQLreader2(1), SQLreader2(2), SQLreader2(3), SQLreader2(4), SQLreader2(5), SQLreader2(6), SQLreader2(7))
    6. End While
    7. command.Dispose()


    Das ist die Lösung!! Man kann ja innerhalb eines SQL Commands die Abfrage machen... Es tut mir Leid, dass ich extra für sowas ein Thread aufgemacht habe!!!

    Also für alle nochmal! Wenn ihr mit einer ID einen Wert einer anderen Tabelle haben wollt, dass ist der Command:

    SQL-Abfrage

    1. SELECT zeiten.user_id, user.name, zeiten.tag, zeiten.datum,
    2. zeiten.beginn, zeiten.ende, zeiten.pause, zeiten.dauer FROM zeiten, user
    3. WHERE zeiten.user_id = user.id
    hmm... sagtest du heut morgen nicht, der Ado.Net-mäßige Zugang zur Datenbänkerei sei für dich uninteressant, weil dein Prog schon fertig sei, und nur ganz wenig Datenbank enthalte?

    Weil ich warnte ja vor der enormen Umständlichkeit, die man sich aufhalst, wenn mans datenbänkern anfängt, ohne zuvor das clientseitige Instrumentarium zu kennen.
    Iwie scheinst du mich genau zu bestätigen mit den Problemen, mit denen du dich seither herumschlägerst... ;)