Когда я вставляю строку в базу данных, используя какой-либо один экземпляр, автоинкрементное значение (ID) некорректно при чтении из другого экземпляра
I подозревают, что это потому, чтоВаши соединения и команды не закрыты / удалены , поэтому они остаются открытыми.
Лучший совет для подключения - использовать его, а затем закрыть / утилизировать.То же самое касается команд, убедитесь, что они расположены.
Вот один из способов сделать это:
Dim intReturn As Integer
sql = "SELECT max(ID) FROM joblog;"
' First query to get your scalar return value
Using cnn As New New SQLiteConnection("Data Source=\\abc\xx\x_backup.db;Password=password;Connect Timeout=55;FailIfMissing=True")
Using mycommand As New SQLiteCommand(sql, cnn)
cnn.ParseViaFramework = True
cnn.Open()
intReturn = mycommand.ExecuteScalar
MessageBox.Show(intReturn)
End Using
End Using
' Second query to actually do the insert
sql = "INSERT INTO joblog (jobid) VALUES (123);"
Using cnn As New New SQLiteConnection("Data Source=\\abc\xx\x_backup.db;Password=password;Connect Timeout=55;FailIfMissing=True")
Using mycommand As New SQLiteCommand(sql, cnn)
cnn.ParseViaFramework = True
cnn.Open()
intReturn = mycommand.ExecuteNonQuery()
MessageBox.Show("Records affected " & intReturn)
End Using
End Using
В другой заметке, рассмотрите использование Параметры SQL , в противном случаеВы можете быть подвержены атакам SQL-инъекций.