SQL语法错误C#
我对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) + "'"); 我的查询字
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....