【发布时间】:2021-02-17 08:34:47
【问题描述】:
在使用似乎无法追踪的准备好的语句时,我的 SQL 语法出现错误。我已经大大简化了代码,但错误仍然存在。这是我第一次尝试准备好的陈述,所以它可能是相当基本的东西,但谷歌仍然没有帮助我。我想要做的是用一组参数更新一个表,我在变量中交出这些参数(在给定的例子中,我用一个简单的“4”(不在变量中)替换了这组参数,并且只交出参数选择行作为变量)。代码如下:
SQLcommand.CommandText = "PREPARE my_prep_statement FROM 'UPDATE tbl1 SET status = 4 WHERE Number = ?';"
SQLcommand.ExecuteNonQuery()
SQLcommand.Parameters.AddWithValue("@DosiNr", "123")
SQLcommand.CommandText = "EXECUTE my_prep_statement USING @DosiNr;"
SQLcommand.ExecuteNonQuery()
列 Number 的类型为 varchar(8)。 错误消息为“您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 ''123'' 附近使用”并且我的表没有更新.
我正在使用 mySQL 数据库,服务器版本 5.1.41
我有一种强烈的感觉,就是在这里看不到非常简单的东西,但我需要帮助来发现它:-(
非常感谢!!
【问题讨论】:
-
您提到了一个错误,但没有说明错误是什么。你有例外吗?如果是这样,正在显示什么消息?如果没有,会发生什么?另外,请为您正在使用的特定 SQL 数据库产品添加标签。
-
哦,对不起!我更新了我的问题 - 希望现在清楚了吗?
-
提供完整且不变的错误消息文本,而不是关于它的故事。
-
我只省略了被告知要检查手册的部分,但我发现发布不完整的错误消息是多么令人困惑,我在我的帖子中修复了这个问题。
-
但是,将准备好的语句中的
?替换为@DosiNr会导致完全相同的错误消息。此外,在执行语句中写入值 '123' 而不是@DosiNr会给出相同的错误消息。如果准备好的语句中的?不是通配符(也可以用于@DosiNr等用户变量),那么我必须回去学习准备好的语句的基础知识——请告诉我这是否是我所拥有的去做!
标签: mysql sql vb.net syntax-error prepared-statement