.sdf Datenbank vergisst Einträge (INSERT INTO FALSCH?)

  • VB.NET

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

    .sdf Datenbank vergisst Einträge (INSERT INTO FALSCH?)

    Hy Leute,

    habe ein komisches Problem.

    Ich habe eine SQl-Datenbank (mit MS SQL Compact).

    Da schreibe ich Werte rein und liste sie mir in einem Listview ein.
    Nachdem ich den Schreib-Befehl ausführe, habe ich meinen Datensatz wie gewünscht in der Übersicht.

    Wenn ich aber das Debuggen beende und erneut öffne, steht nichts mehr drin und die Datenbank selber ist auch leer.

    Hab ich einen Fehler im Code?


    SQL-Abfrage

    1. var = Nothing
    2. con.ConnectionString = "Data Source=" & db & ""
    3. Try
    4. cmd.Connection = con
    5. cmd.CommandText = "SELECT MAX(stammdaten_id) as stammdaten_id FROM stammdaten"
    6. con.Open()
    7. reader = cmd.ExecuteReader()
    8. var = Nothing
    9. Do While reader.Read()
    10. var = reader("stammdaten_id") + 1
    11. Loop
    12. reader.Close()
    13. cmd.CommandText = "INSERT INTO stammdaten (stammdaten_id) VALUES (" & var & ")"
    14. cmd.ExecuteNonQuery()
    15. cmd.CommandText = "INSERT INTO vertragsdaten (vertragsdaten_id) VALUES (" & var & ")"
    16. cmd.ExecuteNonQuery()
    17. cmd.CommandText = "INSERT INTO maßnahmen (maßnahmen_id) VALUES (" & var & ")"
    18. cmd.ExecuteNonQuery()
    19. cmd.CommandText = "INSERT INTO anlagendaten (anlagendaten_id) VALUES (" & var & ")"
    20. cmd.ExecuteNonQuery()
    21. cmd.CommandText = "INSERT INTO verbrauchshistorie (verbrauchshistorie_id) VALUES (" & var & ")"
    22. cmd.ExecuteNonQuery()
    23. cmd.CommandText = "INSERT INTO wirtschaftlichkeit (wirtschaftlichkeit_id) VALUES (" & var & ")"
    24. cmd.ExecuteNonQuery()
    25. Catch ex As Exception
    26. MsgBox(ex.Message)
    27. End Try
    28. con.Close()
    29. Detail.Show()
    30. Me.Hide()

    bemme90 schrieb:

    Hab ich einen Fehler im Code?

    Nein.
    Die DB liegt im Projekt-Ordner. Wenn du Debug startest, wird sie in den Debug Ordner KOPIERT und zwar JEDES MAL wenn du debugst. Dadurch überschreibt sie natürlich die dort vorhandene. Das Feature hat Vor- und Nachteile.
    Zum abstellen: In den Dateieigenschaften "Copy to Output Directory" auf "Never" setzen (englisches VS hier, also bitte übersetzen ;)

    bemme90 schrieb:

    Das Problem ist nur, dass ich, wenn ich es auf "nicht koipieren" setzte, die Fehlermeldung kommt, dass die Datenbank nicht gefunden wurde.

    Na ja ...
    Man kopiert sie EINMAL oder BEI BEDARF manuell in das Debug-Verzeichnis. Scheint irgendwie naheliegend ...

    PS: Alternativ nimmt man keinen relativen Pfas (relativ zur .exe), sondern einen ABSOLUTEN Pfad