Member 13512434 Ответов: 1

Синтаксическая ошибка в инструкции INSERT into. Нужна помощь


У меня возникли некоторые проблемы с оператором insert, который я использую для вставки строк в базу данных access, и я постоянно получаю "синтаксическую ошибку в операторе INSERT INTO."

public void Insert(Person p)
        {
            try
            {
                command.CommandText = "INSERT INTO NewUser(Position, Forename, Surname, [Telephone Number], Username, [Password], [Confirm Password], [Start Date]) VALUES('" + p.PositionPositionCmbx1+ "', '" + p.FirstName_txt1+ "', '" + p.Surname_txt1+ "', '" + p.Telnumber_txt+ "', '" + p.PasswordNU_txt1+ "', '" + p.ConfirmPasswrd_txt1+ "')";
                command.CommandType = System.Data.CommandType.Text;
                connection.Open();
                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
            finally
            {
                connection.Close();
            }
        }


Что я уже пробовал:

Размещение [] вокруг всех значений в операторе insert

1 Ответов

Рейтинг:
1

Suvendu Shekhar Giri

Вы передаете меньшее количество значений, чем упомянутое количество столбцов Ваш запрос INSERT ожидает 8 значений, но вы передаете только 6 значений. Во-первых правильно, что.

Во-вторых, поместите свой запрос в строковую переменную и посмотрите, что является фактическим вычисляемым запросом. Что-то вроде следующего-

string query ="INSERT INTO NewUser(Position, Forename, Surname, [Telephone Number], Username, [Password], [Confirm Password], [Start Date]) VALUES('" + p.PositionPositionCmbx1+ "', '" + p.FirstName_txt1+ "', '" + p.Surname_txt1+ "', '" + p.Telnumber_txt+ "', '" + p.PasswordNU_txt1+ "', '" + p.ConfirmPasswrd_txt1+ "')";


ОБНОВЛЕНИЕ
Вышесказанное просто для того, чтобы все было просто и использовалось только ваш код. Но ваш код серьезно подвержен SQL-инъекция[^И самое лучшее, что вам не нужно изобретать велосипед, а просто некоторые незначительные изменения могут сделать эту работу. Пожалуйста, проверьте следующие ссылки для получения дополнительной помощи. Я настоятельно рекомендую проверить и дать мне знать, если я могу помочь в реализации этого.
Использование параметризованных запросов для предотвращения атак SQL-инъекций в SQL Server[^]

Если вам все еще нужна помощь, пожалуйста, дайте мне знать :)


OriginalGriff

Причина моего голосования одна: никогда не поощряйте никого объединять строки в форму и команду SQL - пожалуйста, прочтите о SQL-инъекции, а затем исправьте все свои собственные приложения в приоритетном порядке.

Suvendu Shekhar Giri

А! Я его заслужил.
Я был сторонником мер безопасности для SQL-инъекций и других топ-10 OWASP и несколько раз говорил об этом в своих ответах в CP, но было так глупо пропустить здесь.

Большое спасибо за напоминание @OriginalGriff. Я позабочусь об этом и в будущем. Я обновил ответ.

OriginalGriff

:большой палец вверх: