Auslesen einer SQLite Datenbank

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von singu.

    Auslesen einer SQLite Datenbank

    Ich verwende folgenden Beispielcode um auf eine SQLite Datenbank zuzugreifen. Nun möchte ich gerne wissen, gibt es noch eine andere Möglichkeit zum Lesen der Inhalte aus der Datenbank. Momentan verwende ich die mit myReader.Read()

    VB.NET-Quellcode

    1. Imports System.Data.SQLite
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. 'SQLite deklarieren
    5. Dim myConnection As New SQLiteConnection("Data Source=D:\DeineDatenbank.sqlite;Version=3")
    6. Dim myCommand As New SQLiteCommand
    7. Dim myAdapter As New SQLiteDataAdapter
    8. Dim myData As New DataTable
    9. Dim myReader As SQLiteDataReader
    10. 'Datenbank inklusive Tabelle erstellen.
    11. myConnection.Open() 'Connection öffnen
    12. myCommand = New SQLiteCommand("CREATE TABLE Tabelle (Anrede CHAR(255), Vorname CHAR(255), Nachname CHAR(255))", myConnection) 'Command festlegen
    13. myCommand.ExecuteNonQuery() 'Command ausführen
    14. myConnection.Close() 'Connection schliesen
    15. ''Daten in die Datenbank Hinzufügen
    16. myConnection.Open() 'Connection öffnen
    17. myCommand = New SQLiteCommand("INSERT INTO Tabelle (Anrede, Vorname, Nachname) VALUES (@Anrede, @Vorname, @Nachname)", myConnection) 'Comand festlegen
    18. ''Parameter für das Speichern
    19. myCommand.Parameters.AddWithValue("@Anrede", ComboBoxAnrede.Text)
    20. myCommand.Parameters.AddWithValue("@Vorname", TextboxVorname.Text)
    21. myCommand.Parameters.AddWithValue("@Nachname", TextboxNachname.Text)
    22. myCommand.ExecuteNonQuery() 'Command ausführen
    23. myConnection.Close() 'Connection schliesen
    24. 'Daten aus der Datenbank lesen
    25. Methode 1: mit dem DataTable
    26. myData.Clear() 'DataTable löschen
    27. myConnection.Open() 'Connection öffnen
    28. myCommand = New SQLiteCommand("SELECT * FROM Tabelle", myConnection) 'Command festlegen
    29. myAdapter.SelectCommand = myCommand 'Command an Adapter übergeben
    30. myAdapter.Fill(myData) 'DataTable füllen
    31. DataGridView1.DataSource = myData 'DataGridView mit Daten von DataTable füllen
    32. myConnection.Close() 'Connection schliesen
    33. 'Methode 2: mit dem DataReader
    34. myConnection.Open() 'Connection öffnen
    35. myCommand = New SQLiteCommand("SELECT * FROM Tabelle", myConnection) 'Command festlegen
    36. myReader = myCommand.ExecuteReader 'Command ausführen
    37. Do While myReader.Read() 'Jede Reihe durchlaufen
    38. ComboBox1.Items.Add(myReader("Anrede")) 'In ComboBox laden
    39. Loop
    40. myReader.Close() 'Reader schliesen
    41. myConnection.Close() 'Connection schliesen
    42. End Sub
    43. End Class
    Hallo singu,

    die Fill Methode für das Datagrid hast du ja auch schon. Wenn du die Combobox füllen willst würde ich ein neues DataTable erzeugen und mit der Fill Methode füllen.

    Dann die Combobox mit . DATASOURCE an das DATATABEle hängen.

    Gruß

    Maxwell
    Das da oben ist ja nur ein Beispiel. Ich möchte folgendes in der Datenbank speichern. Und zwar in einer Tabelle befinden sich Kategorien und in der Tabelle befinden sich Programme. In der Tabelle mit den Programmen gibt es auch eine Spalte Kategorie.

    Also ich lies die Kategorien aus, und dann geh ich die Kategorien durch und mach dann immer ein Select Befehl auf die Programme die zu der Kategory x gehören.
    Ich hab jetzt wieder ein Problem und zwar wenn ich mit folgendem Code eine neue Tabelle erstelle, dann ist die erste Zeile bereits vorhanden aber leer. ich will aber nicht das er eine Zeile anlegt, weil das mach ich später mit INSERT

    VB.NET-Quellcode

    1. myConnection.Open() 'Connection öffnen
    2. myCommand = New SQLiteCommand("CREATE TABLE Tabelle (Anrede CHAR(255), Vorname CHAR(255), Nachname CHAR(255))", myConnection) 'Command festlegen
    3. myCommand.ExecuteNonQuery() 'Command ausführen
    4. myConnection.Close() 'Connection schliesen
    Woher weist Du denn, dass die Zeile vorhanden ist? Eigentlich sieht man nur eine leere Platzhalterzeile. Falls eine Zeile angelegte würde, woher auch immer, sollte eigentlich Deine Primärschlüsselspalte einen Wert haben.

    Ach ja Primärschlüssel hast Du nicht, und mit Datenbanktheorie und Größe von Datenbanken scheinst Du Dich auch noch nicht zu sehr auseinander gesetzt zu haben.
    - Erstellen von Relationen zwischen Tabellen
    - Die verschiedenen Datentypen mit ihrer Größe in der Datenbank und was passiert wenn ich mal viele Datensätze habe?
    - Normalformen von relationalen Datenbanken
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

    INOPIAE schrieb:

    Woher weist Du denn, dass die Zeile vorhanden ist? Eigentlich sieht man nur eine leere Platzhalterzeile. Falls eine Zeile angelegte würde, woher auch immer, sollte eigentlich Deine Primärschlüsselspalte einen Wert haben.

    Ich verwend den SQLite Administrator zum Öffnen von Datenbanken.

    INOPIAE schrieb:


    Ach ja Primärschlüssel hast Du nicht, und mit Datenbanktheorie und Größe von Datenbanken scheinst Du Dich auch noch nicht zu sehr auseinander gesetzt zu haben.
    - Erstellen von Relationen zwischen Tabellen
    - Die verschiedenen Datentypen mit ihrer Größe in der Datenbank und was passiert wenn ich mal viele Datensätze habe?
    - Normalformen von relationalen Datenbanken

    Das was du da geschrieben hast, stimmt überhaupt nicht. Ich hab das Beispiel im Beitrag 1 aus der CodeGallery von wintoolz. Die Datenbank die ich für das Projekt benötige sieht komplett anders aus. Ich hab lediglich das Beispiel benötigt um mir eine Klasse zu schreiben mit der ich mit nur wenig Code auf die Datenbank zugreifen kann.
    Wenn du ein SELECT gegen die Datenbank fährst sollt kein Eintrag kommen. Daher ist die Datenbank mit Sicherheit leer.

    Wenn du aber im Administrator dir die Datenbank ansieht fährt der Admin ein Insert gegen die Datenbank und erzeugt damit einen leeren Datensatz.

    Gruß

    Maxwell

    maxwell schrieb:

    Wenn du ein SELECT gegen die Datenbank fährst sollt kein Eintrag kommen. Daher ist die Datenbank mit Sicherheit leer.

    Wenn du aber im Administrator dir die Datenbank ansieht fährt der Admin ein Insert gegen die Datenbank und erzeugt damit einen leeren Datensatz.

    Gruß

    Maxwell

    Das ist mir am Ende auch aufgefallen.