2015-05-30 12 views
1

У меня есть этот код, где я пытаюсь вставить значения в таблицу Планеты через текстовые поля. Но я продолжаю получать ошибку. Неправильный синтаксис рядом с «Hoth» (который является tbName.Text). Больше информации не приводится.Неправильный синтаксис около 'Hoth'

 string q = "INSERT INTO [Planets] VALUES('" + tbName.Text + "','" + tbRace.Text + "',''" + tbDesc.Text + "'');"; 

     SqlConnection con = new SqlConnection(cs); 

     SqlCommand query = new SqlCommand(q, con); 
     con.Open(); 

     SqlDataReader readers = query.ExecuteReader(); 

     readers.Close(); 
     con.Close(); 
+1

Это проблема уязвимости SQL-инъекций. Для этого используйте параметры. https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110).aspx Если вы не исправляете его с параметрами, у вас есть слишком много синусов цитаты вокруг tbDesc.Text. –

+0

Я рассмотрю вопрос о параметризации запроса. Двойные одинарные кавычки были там, чтобы исправить еще одну неправильную проблему синтаксиса. Незакрытый кавычек рядом ');' –

+0

'' '"+ tbDesc.Text +"' ''Не использовать 2 одинарные кавычки - это означало бы экранирование кавычек –

ответ

0

Невозможно узнать, в чем проблема, без полной инструкции SQL. Вероятным виновником является еще один апостроф в одном из других входов в ваш оператор SQL.

Оценка всей строки «q» перед отправкой ее в БД облегчит вам поиск проблемы.

Как указал Джордан Паркер в комментариях, вы должны параметризовать запрос безопасности, который позволит избежать проблем с зарезервированными символами в строчном контенте.

+0

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