SQL语法错误C#

SQL语法错误C#,c#,mysql,syntax,C#,Mysql,Syntax,我对C#相当陌生,我正在尝试制定一个教师管理计划 这是我用来执行查询的函数 string commentString = "sC" + (y + 1) + "Y" + (i + 1) + ""; executeQuery("UPDATE student SET " + commentString + " = '" + s.getStudentCourses(i,y,s)+ "' WHERE sNumber = '" + s.getStudNumber(s) + "'"); 我的查询字

我对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错误。请帮帮我,我的作业两天后就要交了,我真的需要把它完成。

你有没有试着去掉字段名周围的单引号?我不确定这是否有效,但这是我要尝试的一件事


如果这没有帮助,请告诉我,我将删除此答案

此处询问并回答您的问题(列名中的减号):

在查询中使用带减号的列名时,需要在单引号上使用“反勾号”。像这样:

UPDATE student SET `sComments1-1` = 'wa5235' WHERE sNumber = 68721919

似乎没有任何方法可以从
“sC”+(y+1)+“y”+(i+1)+“
获取
sComments1-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
值中删除(因为它是一个整数而不是一个字符列)


列名“sComments1-1”不应作为带引号的字符串,只需在不带引号的情况下写入列名。

另外。。。我建议你用谷歌搜索“SQL注入”这个术语。你的代码有一个非常严重的安全漏洞,你应该尽快了解。事实上,是的,破折号可能是一个问题。谢谢你,你救了我LOL,尽管已经一年了,谢谢!
"UPDATE student SET 'sComments1-1' = 'wa5235' WHERE sN....