错误:您的SQL语法中有一个错误,但SQL语句可以工作

本文关键字:错误 SQL 工作 语句 有一个 您的 语法 | 更新日期: 2023-09-27 17:59:38

我正试图在for循环中迭代更新我的c#应用程序中的MySql表。我得到这个错误:

 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 '935 WHERE ID=1' at line 1

然而,当我在PhpMyAdmin中运行SQL语句时,它运行得很好,并更新了表中的特定位置。

代码:

for (int i = 1; i <= 10; i++)
        {
            string queryMean = " SELECT (RT1+RT2+RT3+RT4+RT5+RT6+RT7+RT8+RT9+RT10+RT11+RT12+RT13+RT14+RT15+RT16+RT17+RT18+RT19+RT20+RT21+RT22+RT23+RT24+RT25+RT26+RT27+RT28+RT29+RT30+RT31+RT32+RT33+RT34+RT35+RT36+RT37+RT38+RT39+RT40+RT41+RT42+RT43+RT44+RT45+RT46+RT47+RT48+RT49+RT50+RT51+RT52+RT53+RT54+RT55+RT56+RT57+RT58+RT59+RT60+RT61+RT62+RT63+RT64+RT65+RT66+RT67+RT68+RT69+RT70+RT71+RT72+RT73+RT74+RT75+RT76+RT77)/77 AS priem FROM reflextime WHERE reflextime.ID=" + i;
            MySqlCommand cmd = new MySqlCommand(queryMean, conect);
            readerMean = cmd.ExecuteReader();
            readerMean.Read();
            string result = readerMean["priem"].ToString();
            double priem = Convert.ToDouble(result);
            double priemer = Math.Round(priem, 3);
            readerMean.Close();
            string query2 = "UPDATE feture SET priemer="+priemer+" WHERE ID="+i;
            MySqlCommand cmdx = new MySqlCommand(query2, conect);
            cmdx.ExecuteScalar();   // here is the exception thrown
        }

谢谢。

错误:您的SQL语法中有一个错误,但SQL语句可以工作

请注意,如果这在您的机器上运行(slovak区域性设置),则double priemer中的值将被转换为字符串,例如"586935"。这不是您想要的,因为,在SQL中的含义与.不同。解决问题的最简单方法是使用

string query2 = "UPDATE feture SET priemer="+priemer.ToString(CultureInfo.InvariantCulture)+" WHERE ID="+i;

顺便说一句,如果您在将query2发布到此处之前打印了它,您可能已经发现了这个问题。

还要注意,这绝不是用C#调用查询的最佳实践,这里可以找到如何创建参数化查询的好线索。