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代码的程序。

C#mySQL INSERT语句出错-“;您的SQL语法中有一个错误;

试试这个:

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";