2015-05-03 2 views
-3

ПроблемаSQL запрос на обновление метания ошибку синтаксиса

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

линия ...

command2.ExecuteNonQuery(); 

... это один, где выбрасывается ошибка.

Код

connection.Open(); 
OleDbCommand command2 = new OleDbCommand(); 
command2.Connection = connection; 
query = "update Clients set FirstName='" + txt_FirstName.Text + "', Surname='" + txt_Surname.Text + "', AddressFirstLine='" + txt_AddressFirstLine.Text + "', AddressSecondLine='" + txt_AddressSecondLine.Text + "', AddressTown='" + txt_AddressTown.Text + "', AddressPostcode='" + txt_AddressPostcode.Text + "', Email='" + txt_Email.Text + "', Telephone='" + txt_TelephoneNumber.Text + "', Username='" + txt_Username.Text + "', UKARAID='" + txt_UKARAID.Text + "', where ClientID=" + txt_ClientID.Text; 
MessageBox.Show(query); 
command2.CommandText = query; 
command2.ExecuteNonQuery(); 
connection.Close(); 

Ошибка Dialog

Error Dialog

Заранее спасибо за вашу помощь! Если есть что-то еще, что я могу предоставить, чтобы помочь ответить на мой вопрос, дайте мне знать.

PS. Я знаю о параметризованных запросах и буду их реализовывать, поэтому не беспокойтесь об этом. :)

+7

лишняя запятая перед' WHERE'. – Amadan

+5

Ну, это должно дать вам некоторое представление о том, почему использовать параметризованные запросы. Не только полезно предотвратить SQL-инъекцию, но также значительно облегчает обнаружение ошибок в вашей строке SQL-оператора. – Alex

+0

Thankyou @Amadan за ваш ответ. Вот в чем проблема! Трудно поверить, что я не мог найти это сам. – Oli

ответ

2

Существует запятую перед где, вам необходимо удалить, что ("», где ClientID =")

query = "update Clients set FirstName='" + txt_FirstName.Text + "', Surname='" + txt_Surname.Text + "', AddressFirstLine='" + txt_AddressFirstLine.Text + "', AddressSecondLine='" + txt_AddressSecondLine.Text + "', AddressTown='" + txt_AddressTown.Text + "', AddressPostcode='" + txt_AddressPostcode.Text + "', Email='" + txt_Email.Text + "', Telephone='" + txt_TelephoneNumber.Text + "', Username='" + txt_Username.Text + "', UKARAID='" + txt_UKARAID.Text + "' where ClientID=" + txt_ClientID.Text; 
+0

Да, спасибо, у Амадана был ответ. – Oli