Depotdad80 Ответов: 2

Вставьте данные в SQL, получив ошибку, которую я не понимаю, почему! ?


Я новый кодер, работаю с вставкой имени и фамилии в таблицу БД. Я думал, что это довольно хорошо продумано, однако я получаю следующую ошибку.

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: Incorrect syntax near 'Cooper'.


Вот мой блок кода, обрабатывающий оператор INSERT.

    If (myConn.State = ConnectionState.Closed) Then myConn.Open()
    Dim myNewEntry As New SqlCommand(("INSERT INTO SCOUTINFO (FIRSTNAME, LASTNAME)
                           values('" & txtFirstName.Text & "'), ('" & txtLastName.Text & "'"), myConn)
    myNewEntry.ExecuteNonQuery()
End If


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

Я пробовал разные форматы вставки и пытался понять, есть ли какой-то лучший способ сделать вставку. Я видел материал набора данных, но не понимаю его, и поскольку я новичок, я пробую то, что кажется самым прямым путем.

Depotdad80

Кстати, ошибка возникает в части LASTNAME. Я удалил его, просто попробовав имя, но получил ту же ошибку. Так что я не совсем понимаю, что именно нарушает это утверждение.

2 Ответов

Рейтинг:
2

Karthik_Mahalingam

синтаксическая ошибка и исправление доступны в решении 1 Каспера

но ваш код уязвим для SQL-инъекция[^] атаки.

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

Dim myNewEntry As New SqlCommand("INSERT INTO SCOUTINFO (FIRSTNAME, LASTNAME) values(@first,@last)")
     myNewEntry.Parameters.Add("@first", txtFirstName.Text)
     myNewEntry.Parameters.Add("@first", txtLastName.Text)
     myNewEntry.ExecuteNonQuery()


Depotdad80

Большое спасибо! Сегодня утром у меня в офисе был программист, который указал именно на это. Похоже, мне предстоит еще многое прочитать, чтобы понять команду Parameters.

Karthik_Mahalingam

крутой,
если ваша проблема решена, пожалуйста, закройте этот пост, пометив его как ответ.

Рейтинг:
0

casper_mystic@yahoo.com

Ваша ошибка здесь:

Dim myNewEntry As New SqlCommand(("INSERT INTO SCOUTINFO (FIRSTNAME, LASTNAME)
                           values('" & txtFirstName.Text & "'), ('" & txtLastName.Text & "'"), myConn)


Мой исправить:
Dim myNewEntry As New SqlCommand(("INSERT INTO SCOUTINFO (FIRSTNAME, LASTNAME)
                           values('" & txtFirstName.Text & "', '" & txtLastName.Text & "')"), myConn)


Depotdad80

Спасибо!