C# 尝试插入数据表的数组值时发生SQL语法错误

C# 尝试插入数据表的数组值时发生SQL语法错误,c#,mysql,sql,datatable,C#,Mysql,Sql,Datatable,当我尝试在mysql数据库中插入名为“table”的datatable的数组值时,出现了SQL语法错误 ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.0.27-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right. Datatable=表格 代

当我尝试在mysql数据库中插入名为“table”的datatable的数组值时,出现了SQL语法错误

ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-5.0.27-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right.
Datatable=表格

代码如下:

 for (int x = 0; x < table.Rows.Count; x++)
   {
      conn.Open();
      OdbcCommand command = new OdbcCommand("INSERT INTO jevslimporttemp(JevSLImportTempCode, JevSLImportTempDescription, JevSLImportTempAmount)VALUES('" + table.Rows[x][0].ToString() + "','" + table.Rows[x][1].ToString() + "','" + Convert.ToDouble(table.Rows[x][2].ToString()) + "');", conn);
      command.ExecuteNonQuery();
      conn.Close();
   }

变量中的值很可能会干扰sql,比如单引号或问号。您应该参数化您的查询

OdbcCommand command = new OdbcCommand("INSERT INTO jevslimporttemp(JevSLImportTempCode, JevSLImportTempDescription, JevSLImportTempAmount)VALUES(?, ?, ?);", conn);

command.Parameters.AddWithValue("JevSLImportTempCode", table.Rows[x][1].ToString());
command.Parameters.AddWithValue("JevSLImportTempDescription", table.Rows[x][1].ToString());
command.Parameters.AddWithValue("JevSLImportTempAmount", Convert.ToDouble(table.Rows[x][2].ToString()));

看起来所有三个字段都不是字符串类型。根据字段名,我猜第三个字段是数字字段。第三个字段尝试不使用引号:

OdbcCommand command = new OdbcCommand("INSERT INTO jevslimporttemp(JevSLImportTempCode, JevSLImportTempDescription, JevSLImportTempAmount)VALUES('" + table.Rows[x][0].ToString() + "','" + table.Rows[x][1].ToString() + "'," + Convert.ToDouble(table.Rows[x][2].ToString()) + ");", conn);

编辑问题并在变量替换后打印出字符串。您得到的错误只需在此处提及,并且在执行时,使您的查询可读,而无需水平滚动。我只是尝试在messagebox中输出字符串,效果很好。但是当我使用查询字符串将其插入数据库时,我得到了一个错误。有人能告诉我查询的哪一部分是错误的吗?你得到的错误只是在这里提到这似乎是正确的解决我的问题。。。谢谢先生的帮助。。。上帝保佑