Проблема с вставкой данных в базу данных ACCESS.
У меня возникли проблемы с вставкой данных в базу данных ACCESS. Приведенный ниже код-это то, что я использую, но он создает исключение. Что-то вроде "количество значений запроса и полей назначения не совпадают."
<pre lang="vb"> Dim cmd As OleDbCommand = New OleDbCommand cmd.CommandType = CommandType.Text cmd.Connection = myConnection cmd.CommandText = "INSERT INTO users VALUES ('" & tbUsername.Text & "', '" & tbPassword1.Text & "', '" & cbRole.SelectedItem & "');" cmd.Parameters.Add(cmd.CreateParameter).ParameterName = "username" cmd.Parameters.Item("username").Value = tbUsername.Text cmd.Parameters.Add(cmd.CreateParameter).ParameterName = "pwd" cmd.Parameters.Item("pwd").Value = tbPassword1.Text cmd.Parameters.Add(cmd.CreateParameter).ParameterName = "role" cmd.Parameters.Item("role").Value = cbRole.SelectedItem myConnection.Open() Try cmd.ExecuteNonQuery() Catch ex As OleDb.OleDbException MsgBox(ex.Message) End Try myConnection.Close()
Любые мысли были бы полезны. Я здесь в полной растерянности...
Что я уже пробовал:
Я попытался добавить столбцы в инструкцию SQL, но потом он говорит, что есть синтаксическая ошибка. Я проверил список зарезервированных слов доступа и не использую их в качестве имен таблиц или столбцов.
Я прошелся по этому коду несколько раз, и мне кажется, что он должен работать, и я проверил, что в таблице есть только 3 столбца, и я передаю только три переменные для записи в таблицу.
Richard Deeming
У вас есть срочное чтение:
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
Richard Deeming
Как только вы это исправите, вам нужно будет исправить то, как вы храните пароли:
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - все правильно[^]
matt09524
Эта программа не близка к завершению. Выясняя эту проблему, я узнал о параметризации, но мне все еще нужно научиться это делать. Хэширование паролей-это то, о чем я знал, но еще не применял на практике в этом приложении.
Но читать информацию там было приятно. Похоже, я пойду с Libsodium, если вы не порекомендуете что-то получше?