Синтаксическая ошибка SQL C # - PullRequest
0 голосов
/ 19 января 2012

Я довольно новичок в C # и пытаюсь создать программу управления преподавателем.

Это функция, которую я использую для выполнения запроса.

string commentString = "sC" + (y + 1) + "Y" + (i + 1) + "";
executeQuery("UPDATE student SET " + 
  commentString + " = '" + s.getStudentCourses(i,y,s)+
  "' WHERE sNumber = '" + s.getStudNumber(s) + "'");

Моя строка запроса:

query   "UPDATE student SET 'sComments1-1' = 'wa5235' WHERE sNumber = 68721919" string

Исключение, которое я получаю:

[MySql.Data.MySqlClient.MySqlException] {"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''sComments1-1' = 'wa5235' WHERE sNumber = 68721919' at line 1"}    MySql.Data.MySqlClient.MySqlException

Вот структура данных SQL:

CREATE TABLE `NewTable` (
`sNumber`  int(9) NOT NULL ,
`sFirstName`  varchar(32) NOT NULL ,
`sLastName`  varchar(32) NOT NULL ,
`sDOB`  varchar(9) NOT NULL ,
`sGrade`  int(1) NOT NULL ,
`sEmail`  varchar(32) NULL ,
`sParentName`  varchar(32) NOT NULL ,
`sParentPhone`  varchar(11) NOT NULL ,
`sHomeAddress`  varchar(32) NOT NULL ,
`sComments1-1`  varchar(255) NOT NULL ,

Использование MySQL 5.5

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

Ответы [ 4 ]

1 голос
0 голосов
/ 19 января 2012
"UPDATE student SET 'sComments1-1' = 'wa5235' WHERE sN....

Имя столбца 'sComments1-1' не должно быть строкой в ​​кавычках, просто напишите имя столбца без кавычек.

0 голосов
/ 19 января 2012

Похоже, нет способа получить sComments1-1 из "sC" + (y + 1) + "Y" + (i + 1) + "", поэтому я не уверен, почему вы считаете, что строка запроса имеет правильную форму.

В любом случае имена столбцов должны быть заключены в кавычки, а не в одинарные кавычки:

UPDATE student SET `sComments1-1` = ...

Предполагая, что sComments1-1 является опечаткой или более ранней версией, и на самом деле это должен быть один из нескольких столбцов формы sCaYb, где a и b представляют собой различные целые числа, код будет выглядеть примерно так:

// Get column name of form sC*Y* where *'s are distinct integers.

string commentColumn = "sC" + (y + 1) + "Y" + (i + 1);

// Execute query with correct quote types.

executeQuery("UPDATE student SET `" + commentColumn + "` = '" +
    s.getStudentCourses(i,y,s) +
    "' WHERE sNumber = " + s.getStudNumber(s));

Я добавил обратные пометки вокруг имени столбца и удалил их из значения sNumber (поскольку это целое число, а не символьный столбец).

0 голосов
/ 19 января 2012

Вы пытались удалить одинарные кавычки вокруг имен ваших полей? не уверен, что это сработает, но я бы попробовал одну вещь.

если это не поможет, дайте мне знать, и я удалю этот ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...