Как я могу импортировать?dat-файл в VB, net с использованием sqlite
Я использую этот код для импорта .dat файл в таблицу SQLite
Мое соединение
Public strConn As String = "Data Source =DTS.db;Version=3;"
Моя Процедура
Private Sub btnImportDB_Click(sender As Object, e As EventArgs) Handles btnImportDB.Click If txtDatFile.Text = String.Empty Then Exit Sub Dim fname As String = txtDatFile.Text Dim colsexpected As Integer = 6 Dim Filereader As New StreamReader(fname, Encoding.Default) Dim sLine As String = String.Empty Using MyConn As New SQLiteConnection(strConn) Do sLine = Filereader.ReadLine If sLine Is Nothing Then Exit Do Dim vArray() As String = sLine.Split(CType(vbTab, Char())) 'Save data to table Dim InsertData As String = "INSERT INTO tblTempData (fldMacId,fldDateTime,fldRem1,fldRem2,fldRem3,fldRem4) Values (@MacId,@xDateTime,@Rem1,@Rem2,@Rem3,@Rem4)" Dim cmd As New SQLiteCommand(InsertData, MyConn) cmd.Parameters.AddWithValue("@MacId", vArray(0)) cmd.Parameters.AddWithValue("@xDateTime", vArray(1)) cmd.Parameters.AddWithValue("@Rem1", vArray(2)) cmd.Parameters.AddWithValue("@Rem2", vArray(3)) cmd.Parameters.AddWithValue("@Rem3", vArray(4)) cmd.Parameters.AddWithValue("@Rem4", vArray(5)) Try With MyConn If .State = ConnectionState.Open Then .Close() .ConnectionString = strConn .Open() MyConn.Open() cmd.ExecuteNonQuery() Cursor.Current = Cursors.WaitCursor 'MsgBox("Connection is Open") End With Catch ex As Exception MessageBox.Show(ex.Message) End Try Loop End Using MessageBox.Show("Records successfully imported.", "Save", MessageBoxButtons.OK, MessageBoxIcon.Information) txtDatFile.Clear() End Sub
Это и есть ошибка
{"Operation is not valid due to the current state of the object."}
Что я уже пробовал:
Я не могу найти, какая часть вызывает ошибку..
Mehdi Gholam
Какой формат у вашего файла .dat (dat-это общее расширение, поэтому какое приложение его создало)?
Richard MacCutchan
Вы вызываете Open() дважды.
IamLance1578
@Мехди Голам
Это формат файла .dat
41 2017-09-07 17:01:09 1 1 1 0
27 2017-09-07 17:01:13 1 1 1 0
42 2017-09-07 17:01:31 1 1 1 0
46 2017-09-07 17:04:05 1 1 1 0
44 2017-09-07 17:04:12 1 1 1 0
45 2017-09-07 17:04:16 1 1 1 0
47 2017-09-07 17:05:09 1 1 1 0
17 2017-09-07 17:05:19 1 1 1 0
29 2017-09-07 17:05:47 1 1 1 0
35 2017-09-07 17:09:14 1 1 1 0
8 2017-09-07 17:09:22 1 1 1 0
8 2017-09-07 17:09:28 1 1 1 0
11 2017-09-07 17:10:49 1 1 1 0
10 2017-09-07 17:13:17 1 1 1 0
33 2017-09-07 17:13:44 1 1 1 0
30 2017-09-07 17:13:56 1 1 1 0
@Ричард MacCutchan
Если я это сделаю то получу ту же ошибку
Private Sub btnImportDB_Click(sender As Object, e As EventArgs) Handles btnImportDB.Click If txtDatFile.Text = String.Empty Then Exit Sub Dim fname As String = txtDatFile.Text Dim colsexpected As Integer = 6 Dim Filereader As New StreamReader(fname, Encoding.Default) Dim sLine As String = String.Empty Using MyConn As New SQLiteConnection(strConn) Do sLine = Filereader.ReadLine If sLine Is Nothing Then Exit Do Dim vArray() As String = sLine.Split(CType(vbTab, Char())) 'Save data to table Dim InsertData As String = "INSERT INTO tblTempData (fldMacId,fldDateTime,fldRem1,fldRem2,fldRem3,fldRem4) Values (@MacId,@xDateTime,@Rem1,@Rem2,@Rem3,@Rem4)" Dim cmd As New SQLiteCommand(InsertData, MyConn) cmd.Parameters.AddWithValue("@MacId", vArray(0)) cmd.Parameters.AddWithValue("@xDateTime", vArray(1)) cmd.Parameters.AddWithValue("@Rem1", vArray(2)) cmd.Parameters.AddWithValue("@Rem2", vArray(3)) cmd.Parameters.AddWithValue("@Rem3", vArray(4)) cmd.Parameters.AddWithValue("@Rem4", vArray(5)) MyConn.Open() cmd.ExecuteNonQuery() Loop End Using MessageBox.Show("Records successfully imported.", "Save", MessageBoxButtons.OK, MessageBoxIcon.Information) txtDatFile.Clear() End Sub