SQLite mit Datagridview vergleichen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Goof.

    SQLite mit Datagridview vergleichen

    Hallo zusammen,

    ich habe das Problem, das ich eine Spalte aus einem Datagridview mit einer SQLite Datenbank vergleichen und Werte in eine Saplte des Datgridview eintragen möchte.

    Der folgende Code funktioniert bei einem kleinen Testdatensatz aber es dauert ewig für einen etwas größeren Datensatz. Wie kann ich das beheben?

    VB.NET-Quellcode

    1. Try
    2. connection = New SQLiteConnection("Data Source=Test_Standard.sqlite")
    3. If connection.State = ConnectionState.Closed Then
    4. connection.Open()
    5. CompactDatabase(connection)
    6. End If
    7. Catch ex As Exception
    8. MsgBox("Connection Failed!")
    9. End Try
    10. For ii = 0 To DataGridView3.RowCount - 1
    11. Using cmd As New SQLiteCommand(connection)
    12. cmd.CommandText = "SELECT * FROM Daten_Abfrage WHERE field6 Like '%" & DataGridView3.Rows(ii).Cells("Column13").Value & "%'"
    13. Dim rdr As SQLiteDataReader = cmd.ExecuteReader()
    14. Using rdr
    15. While (rdr.Read())
    16. Console.WriteLine(rdr(8) & " " & rdr(9))
    17. DataGridView3.Rows(ii).Cells("Column14").Value = rdr(8)
    18. End While
    19. End Using
    20. End Using
    21. Next


    Vielen Dank für Eure Hilfe.

    Goof

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Du schickst für jede DGV-Zeile ein eigenes Sql-Command.
    Effizhienter wäre, du würdest ein einziges SqlCommand schicken, was alle relevanten IDs beinhaltet.
    Sql hält dafür eine Syntax vor, mit dem Schlüsselwort 'IN' - such dir mal eine Doku dazu raus.
    Ups - also mit dem LIKE-Operator, den du derzeit verwendest, ist das nicht kompatibel.

    Mehr raten kann ich nicht, du müsstest erzählen, was die Methode bewirken soll - evtl. ist der LIKE-Operator ja eh fehl am Platz.
    Hallo @ErfinderDesRades,

    die like Funktion brauche ich nicht mehr, da die Werte genau so drin stehen, wie sie sollen. Das war früher nicht konsistent. Wie kann ich das mit Schlüsselwort 'IN' lösen?

    SQLite-Datenbank
    Nr.--field6--field7

    Datagridview
    Nr.-- Werte(Column13) ---Gesuchte_Nummer(Column14)

    Es sollen die Werte der Spalte (Werte(Column13)) des Datagridview mit der Spalte field6 der Datenbank verglichen werden. Wenn ein Wert gefunden wurde soll dann von der Spalte field7 der SQLite-Datenbank der Wert in das Datagridview in die Spalte Gesuchte_Nummer(Column14) eingetragen werden. Ich hoffe ich konnte es erklären, was ich gerne machen möchte.

    Vielen Dank für Deine Hilfe.

    Goof