2014-01-19 9 views
-5

Как я могу закончить эту инструкцию SQL UPDATE? Отладчик говорит мне, чтоSQL UPDATE Where Clause ')'

Строковые константы должны заканчиваться кавычками

и hiighlighting конец предложения WHERE "', con)

cmd = New SqlCommand("UPDATE PersonsA SET(Members_ID='" & midtxt.Text & "'Gamer_Tag='" & gttxt.Text & "'Screenname='" & sntxt.Text & "'First_Name='" & fntxt.Text & "'Last_Name='" & lntxt.Text & "'DoB='" & dobtxt.Text & "'E_Mail_Address='" & emailtxt.Text & "'Position='" & teamptxt.Text & "'UG_Studio'" & ugptxt.Text & "'Cautions='" & ugctxt.Text & "'Record='" & recordtxt.Text & "'Event_Attendance='" & eventatxt.Text & "'Members_Status='" & memberstatcombo.Text & "'GTA_V_Crew_Member='" & gtavcrewmembercombo.Text & "'Games_Owned='" & gamesownedtxt.Text & "'Rep_Group='" & RepGroupcombo.Text & "'WHERE Members_ID='" & midtxt.Text & "', con) 
+1

Добавить двойные кавычки после одинарной кавычки, а также добавить запятые между элементами – Heslacher

+7

Если используется параметризованный запрос такого рода ошибки очень маловероятны. – Steve

+0

Изменить '' ', con) 'to' "'", con) '- Синтаксис, подсвечивающий в вашем вопросе, позволяет легко идентифицировать – Basic

ответ

0

в какой-то момент там переключении из модель '" ... "' до "' ... '"

1
SqlCommand("UPDATE PersonsA SET(Members_ID='" & midtxt.Text & 
          ^this Parenthesis is not needed 

Правильный синтаксис для UPDATE заявление, как

UPDATE PersonsA 
    SET Members_ID= SomeValue, 
     ColumnName = SomeValue, 
     . 
     . 
     ... and so on... 
WHERE Clause 
2

В конце концов изменения

"', con) 

с

"'", con) 

и дать попробовать.

+0

Нет, все еще приводило к той же ошибке. Но я думаю, что это связано со структурой это, я попробую ответить @ M.Ali, я думаю, что это, вероятно, моя проблема. Спасибо за вашу помощь. – user2980316

2

Не только вы пропустили закрытие двойной цитаты, добавили неправильные скобки перед SET, но и ваш синтаксис UPDATE ошибочен, потому что вы пропустите запятую, которая должна отделять поля.

Переключение параметризованных запросов очистит много вещей

cmd = New SqlCommand("UPDATE PersonsA SET [email protected], [email protected], " & _ 
     "[email protected], [email protected], [email protected], [email protected]," & _ 
     "[email protected], [email protected], [email protected], [email protected]," & _ 
     "[email protected], [email protected], [email protected], " & _ 
     "[email protected], [email protected], [email protected]" & _ 
     "WHERE [email protected]", con) 

    cmd.Parameters.AddWithValue("@id",midtxt.Text) 
    .... follow with other parameters .... 
    cmd.ExecuteNonQuery() 

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

Простой обзор о UPDATE statement

+0

Спасибо за ваш ответ, хотя старт сделал немного снисходительно. Я принял ваш метод шоу здесь, m получает довольно странную ошибку «Member_Status не может быть преобразован в тип данных int». Это текст, который находится в поле, а столбец SQL - varchar (35). Почему я получаю эту ошибку, когда ни разу я не сказал это обрабатывать Member_Status как целое число? – user2980316

+1

Извините, что у меня сложилось впечатление, что это было не мое намерение. Это действительно странная ошибка. Не могли бы вы добавить к вашему вопросу фактический код, который использует параметры? – Steve

+0

Также я только что заметил, вы м сгенерировал ваш вопрос с помощью тега MySql, но затем вы используете SqlCommand, который является классом, используемым только для Sql Server. – Steve