Member 13099338 Ответов: 3

В операторе insert есть еще несколько столбцов значений, указанных в предложении values


у меня проблема

я добавляю btn

cmd = New SqlCommand("insert into TBLSubScriptions ([Name],[PhoneNo],[Weight],[Length],[TimeClass],[subscriptionStart],[subscriptionEnd])
values ('" & txtName.Text & "','" & txtphone.Text & "','" & txtwigh.Text & "," & txtLength.Text & "','" & comoTimecl.Text & "','" & txtDatest.Value.Date & "','" & txtenddate.Value.Date & "')", con)


у меня есть ошибка
в операторе insert есть еще несколько столбцов значений, указанных в предложении values

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

я постараюсь, но не решу

я пробовал решить но теперь нет

cmd = New SqlCommand("insert into TBLSubScriptions ([Name],[PhoneNo],[Weight],[Length],[TimeClass],[subscriptionStart],[subscriptionEnd])
values ('" & txtName.Text & "','" & txtphone.Text & "','" & txtwigh.Text & "," & txtLength.Text & "','" & comoTimecl.Text & "','" & txtDatest.Value.Date & "','" & txtenddate.Value.Date & "')", con)

Graeme_Grant

"в операторе insert есть еще несколько столбцов значений, указанных в предложении values"

Это очень ясно объясняет проблему. Подсчитайте свои поля и подсчитывают значения в SQL-оператор, они не совпадают!

Member 13099338

Количество полей равно некоторым

[no name]

Нет, это не так. Используйте правильный параметризованный запрос, и у вас не будет проблемы с отсутствующим символом, как сейчас. И в то же время вы спасете свою базу данных от атаки SQL-инъекций.

PIEBALDconsult

Всегда используйте параметризованные операторы.
И отформатируйте свой SQL так, чтобы он был более читабельным.

3 Ответов

Рейтинг:
1

Karthik_Mahalingam

Форматирование строки sql-запроса уязвимый к SQL-инъекция[^] атаки
всегда использовать Параметризованные запросы для предотвращения атак SQL-инъекций в SQL Server[^]

cmd = New SqlClient.SqlCommand("insert into TBLSubScriptions (Name,PhoneNo,Weight,Length,TimeClass,subscriptionStart,subscriptionEnd)values (@Name,@PhoneNo,@Weight,@Length,@TimeClass,@subscriptionStart,@subscriptionEnd)")
cmd.Parameters.AddWithValue("@Name", txtName.Text)
cmd.Parameters.AddWithValue("@PhoneNo", txtphone.Text)
cmd.Parameters.AddWithValue("@Weight", txtwigh.Text)
cmd.Parameters.AddWithValue("@Length", txtLength.Text)
cmd.Parameters.AddWithValue("@TimeClass", comoTimecl.Text)
cmd.Parameters.AddWithValue("@subscriptionStart", txtDatest.Value.Date)
cmd.Parameters.AddWithValue("@subscriptionEnd", txtenddate.Value.Date)


Рейтинг:
0

Patrice T

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

Ваша реальная проблема заключается в совпадении одинарных кавычек с вашими данными

' Error here         V                 and                       V
& txtphone.Text & "','" & txtwigh.Text & "," & txtLength.Text & "','" & comoTimecl.Text &


Рейтинг:
0

Michael_Davies

Если бы вы использовали параметризованный запрос, это сделало бы его более ясным.

Однако посмотрите на txtwigh. text, после него нет ни одной кавычки, поэтому он сливается со следующим полем.