【问题标题】:Error in SQL syntax;check the manual that corredponds to your MySQL serverSQL 语法错误;查看与您的 MySQL 服务器对应的手册
【发布时间】:2013-03-05 08:34:14
【问题描述】:

我正在尝试使用 c# 向 mysql 数据库中插入一条记录,但我总是看到此错误消息:

您的 SQL 语法有错误;请查看对应的手册 您的 MySQL 服务器版本,以便在附近使用正确的语法 '订单(idOrder,数量,日期,Menu_idMenu)VALUES(10002, '1', '3/17/2013 12:00' 在第 1 行

这是代码:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    if (!row.IsNewRow)
     {
           com.CommandText = "INSERT INTO Order (idOrder, Quantity, Date, Menu_idMenu) VALUES (" + 10002 + ", '" +row.Cells[0].Value.ToString() + "', '"+DateTime.Today.ToString()+"', '" + row.Cells[1].Value.ToString() + "')";
           int insert = com.ExecuteNonQuery();
     }
}

这是什么意思?

【问题讨论】:

  • ,这些答案都没有帮助你吗?

标签: c# mysql mysql-workbench


【解决方案1】:

您在查询中保留了关键字Order。引用它并快乐。

com.CommandText = "INSERT INTO `Order` (idOrder, Quantity, Date, Menu_idMenu) VALUES (" + 10002 + ", '" +row.Cells[0].Value.ToString() + "', '"+DateTime.Today.ToString()+"', '" + row.Cells[1].Value.ToString() + "')";

此外,使用参数也是一个好习惯。

【讨论】:

    【解决方案2】:

    DateOrder 在 MySQL 上是 reserved keywords

    ''之间使用它们

    com.CommandText = "INSERT INTO `Order` (idOrder, Quantity, Date, Menu_idMenu) VALUES (" + 10002 + ", '" +row.Cells[0].Value.ToString() + "', '"+DateTime.Today.ToString()+"', '" + row.Cells[1].Value.ToString() + "')";
    

    并且总是使用parameterized queries。此类代码可用于SQL Injection 攻击。

    其实Date可以不用引号。

    MySQL 允许将某些关键字用作不带引号的标识符,因为 许多人以前使用过它们。

    既然,我建议你使用参数化查询,这里你可以如何在你的代码中使用它;

    com.CommandText = "INSERT INTO `Order` (idOrder, Quantity, Date, Menu_idMenu) VALUES (@idOrder, @Quantity, @Date, @Menu_idMenu)";
    
    com.Parameters.AddWithValue("@idOrder", "10002");
    com.Parameters.AddWithValue("@Quantity", row.Cells[0].Value.ToString());
    com.Parameters.AddWithValue("@Date", DateTime.Today.ToString());
    com.Parameters.AddWithValue("@Menu_idMenu", row.Cells[1].Value.ToString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      相关资源
      最近更新 更多