C#mySQL INSERT语句出错-“;您的SQL语法中有一个错误;
本文关键字:语法 SQL 有一个 错误 您的 C#mySQL 语句 出错 INSERT | 更新日期: 2023-09-27 18:21:50
我一直用这个代码得到同样模糊的错误:
command.CommandText = "INSERT INTO database (upc, title, description, quantity) VALUES ('"+ upc.Text +"',"+"'"+titlename+"',"+ "'"+descname+"',"+ "'1'"+"), MyConString";
错误为:
{"您的SQL语法有错误;请查看与您的MySQL服务器版本相对应,以便使用正确的语法数据库附近(upc、标题、描述、数量)值('016000165779',"Betty Crock"在1号线)
我是C#的新手,正在尝试构建一个使用插入mySQL数据库的UPC代码的程序。
试试这个:
command.CommandText = "INSERT INTO tableName " +
"(upc, title, description, quantity) " +
"VALUES " +
"(@upc, @title, @description, @quantity)";
command.Parameters.AddWithValue("@upc", upc.Text);
command.Parameters.AddWithValue("@title", titlename);
command.Parameters.AddWithValue("@description", descname);
command.Parameters.AddWithValue("@quantity", "1");
注:
- 这通过使用参数化查询修复了SQL注入漏洞。尤其是在我看到
upc.Text
的地方,这让我认为您将用户输入连接到SQL字符串中(非常危险) - 我在您的查询中将单词"database"更改为"tableName"。这是表的名称所在的位置,而不是数据库名称
- 我稍微整理了一下你的字符串声明,这样更容易阅读=)
database
可能是一个保留字。尝试用反勾号逃离:
INSERT INTO `database` ...
我也不知道为什么, MyConString
部分在查询本身内部,但我不是C#专家。
为什么在查询末尾有",MyConString"?这似乎很奇怪。
此外,database
可能不是表的名称。
数据库是mysql中的关键字,尽量给出描述性的名称,这样有助于理解。并使用参数化查询来避免sql注入sql注入。
这是mysql关键字列表:mysql保留关键字,以后尽量避免使用关键字。
command.CommandText = "INSERT INTO [database] (upc, title, description, quantity) VALUES (@upc,@title ... )
command.Parameters.AddWithValue("@upc","upcValue");
command.Parameters.AddWithValue("@title","titleValue");
我想你在昏迷前的结尾缺少了一个双引号:
"+")"
,MyConString";