В своем проекте по информатике я использую базу данных Microsoft Access, чтобы создать приложение для викторин в Visual Basic с использованием форм Windows. Все мои операторы select (использующие oledb для подключения к базе данных) работают правильно и хорошо; но эта вставка в оператор всегда выдает «Синтаксическая ошибка в операторе вставки в», но, насколько я понимаю, в этом нет ничего плохого. Соответствующая таблица называется «Пользователи», с полями «ИД пользователя», «Имя», «Фамилия», «Имя пользователя», «Пароль», «Учитель»; где UserID - это число, учитель - логическое значение, а остальные - строки.
Когда я закончу, пароли будут хэшироваться, но так будет проще проверить, что они еще не созданы.
Я уже пытался ввести значения для идентификатора пользователя, хотя он должен автоматически увеличивать значение при вводе новой записи. И несколько разных способов создания вставки в команду.
Using oCmd As New OleDbCommand("Insert Into Users(FirstName, LastName, Username, Password, Teacher)
Values(@firstName, @lastName, @username, @password, 0)", myConnection)
oCmd.Parameters.Add("@firstName", OleDbType.VarChar, 255).Value = txtFirstName.Text
oCmd.Parameters.Add("@lastNamee", OleDbType.VarChar, 255).Value = txtLastName.Text
oCmd.Parameters.Add("@username", OleDbType.VarChar, 255).Value = txtUsername.Text
oCmd.Parameters.Add("@password", OleDbType.VarChar, 255).Value = txtPassword.Text
oCmd.ExecuteNonQuery()
End Using
'txt ...'. Текст - это текстовые поля, в которых пользователь может ввести строку для значений, которые он хочет, а myConnection - это соединение с базой данных, которое уже открыто другими командами, которые выполнялись и завершались. Я ожидаю, что в таблице пользователей будет создана новая запись со значениями, введенными в текстовые поля; но вместо этого он просто выдает ошибку, указанную выше.