Hallo zusammen,
ich versuche krampfhaft seit einigen Tagen einen ordentlichen Importer einer CSV-Datei zu bauen und scheitere immer wieder. Mittlerweile glaube ich einen guten Weg gefunden zu haben,
allerdings erhalte ich hier auch eine Fehlermeldung und kann sie mir nicht erklären.
Kurz zum Prozess: Ich lese ein Verzeichnis aus in dem ich die gute alte DIR-Funktion nur und daraus eine CSV-Datei konstruieren (A).
Diese CSV-Datei möchte ich gerne in die SQLite-Datenbank schreiben (B). Erst in die eine Tabelle und im Anschluss an in die Zieltabelle (C).
Teil A und C funktionieren, nur Teil B nicht.
Hier erhalte ich immer wieder die Fehlermeldung, dass die Datenbank gelocked ist, ich frage mich nur warum das so ist?
[Ergänzung]
Auf Hinweis von MemoAnMichSelbst: Der Fehler tritt bei diesem Befehl auf
also da wo ich die Daten von der CSV-DataTable in die Datenbank schreiben möchte.
Der Vorgang dauert ein / zwei Minuten und dann erscheint an dieser Stelle die Fehlermeldung.
ich versuche krampfhaft seit einigen Tagen einen ordentlichen Importer einer CSV-Datei zu bauen und scheitere immer wieder. Mittlerweile glaube ich einen guten Weg gefunden zu haben,
allerdings erhalte ich hier auch eine Fehlermeldung und kann sie mir nicht erklären.
Kurz zum Prozess: Ich lese ein Verzeichnis aus in dem ich die gute alte DIR-Funktion nur und daraus eine CSV-Datei konstruieren (A).
Diese CSV-Datei möchte ich gerne in die SQLite-Datenbank schreiben (B). Erst in die eine Tabelle und im Anschluss an in die Zieltabelle (C).
Teil A und C funktionieren, nur Teil B nicht.
Hier erhalte ich immer wieder die Fehlermeldung, dass die Datenbank gelocked ist, ich frage mich nur warum das so ist?
VB.NET-Quellcode
- Public Sub sub_CSVImportieren(pstr_Verzeichnis As String, pstr_Dateiname As String)
- Dim sql_CON As New SQLiteConnection(fkt_SQL_ConStr)
- Dim sql_CMD As New SQLiteCommand("SELECT * FROM ttab_Bilder", sql_CON)
- Try
- sql_CON.Open()
- Dim sql_DA As New SQLiteDataAdapter(sql_CMD)
- Dim sql_CB As New SQLiteCommandBuilder(sql_DA)
- Dim sql_DT As DataTable = fkt_CSVDataTable(pstr_Verzeichnis, pstr_Dateiname).Copy()
- sql_DA.InsertCommand = sql_CB.GetInsertCommand
- sql_DA.Update(sql_DT)
- Catch ex As Exception
- MsgBox(ex.Message)
- Finally
- sql_CON.Close()
- End Try
- End Sub
- ' ****************************
- Public Function fkt_CSVDataTable(ByVal pstr_Verzeichnis As String, ByVal pstr_Datei As String) As System.Data.DataTable
- Dim str_ConStr As String = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & pstr_Verzeichnis & ";Extensions=asc,csv,tab,txt;"
- Dim obj_DT As New DataTable()
- Dim odbc_CON As New OdbcConnection(str_ConStr)
- Dim odbc_CMD As New OdbcCommand("SELECT * FROM [" & pstr_Datei & "]", odbc_CON)
- Dim odbc_Reader As OdbcDataReader
- Try
- ' Als erstes die Spaltenanzahl bestimmen und in die DataTable schreiben
- obj_DT.Columns.Add(New DataColumn("Dateiname"))
- odbc_CON.Open()
- odbc_Reader = odbc_CMD.ExecuteReader
- While odbc_Reader.Read
- obj_DT.Rows.Add(odbc_Reader(0).ToString)
- End While
- odbc_Reader.Close()
- Return obj_DT
- Catch ex As Exception
- MsgBox(ex.Message)
- Return Nothing
- Finally
- odbc_CON.Close()
- End Try
- End Function
[Ergänzung]
Auf Hinweis von MemoAnMichSelbst: Der Fehler tritt bei diesem Befehl auf
also da wo ich die Daten von der CSV-DataTable in die Datenbank schreiben möchte.
Der Vorgang dauert ein / zwei Minuten und dann erscheint an dieser Stelle die Fehlermeldung.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „kurzda“ ()