错误:您的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
}
谢谢。
请注意,如果这在您的机器上运行(slovak区域性设置),则double priemer
中的值将被转换为字符串,例如"586935"。这不是您想要的,因为,
在SQL中的含义与.
不同。解决问题的最简单方法是使用
string query2 = "UPDATE feture SET priemer="+priemer.ToString(CultureInfo.InvariantCulture)+" WHERE ID="+i;
顺便说一句,如果您在将query2发布到此处之前打印了它,您可能已经发现了这个问题。
还要注意,这绝不是用C#调用查询的最佳实践,这里可以找到如何创建参数化查询的好线索。