【发布时间】:2017-10-04 08:43:38
【问题描述】:
我在使用 MySQL 时遇到问题,代码如下:
Imports MySql.Data.MySqlClient 'Last version 6.9.9.0 ADO.Net driver for MySQL
Dim commandSQL As MySqlCommand
connMySQL.Open()
commandSQL = connMySQL.CreateCommand
commandSQL.Connection = connMySQL
commandSQL.CommandText = "UPDATE t_tesordacq SET COD_FOR=@COD_FOR WHERE
YEAR_DOC = 2017 And NUM_DOC = 123" With
commandSQL.Parameters.AddWithValue("@COD_FOR",txtCodFor.Text)
End With
commandSQL.ExecuteNonQuery()
commandSQL.Parameters.Clear()
当我在 txtCodFor 字段中插入包含 撇号(例如:I'm)的文本时,代码出错(*Error: You have an您的 SQL 语法错误;查看与您的 MySQL 服务器版本相对应的手册,以了解在 '\'test' WHERE YEAR_DOC = 2017 And NUM_DOC = 123,* ). 附近使用的正确语法
我也尝试用双撇号替换文本:txtCodFor.Text.Replace("'", "''") 但无事可做。 另外,如果我插入一个反斜杠,它就是重复的!
我已经看到,如果我从 my.ini 的 sql_mode 中删除“NO_BACKSLASH_ESCAPES”选项,一切正常。 不幸的是,为了与 VB6(ODBC 连接)中的书面应用程序兼容,我无法永久删除此选项
感谢您的帮助
【问题讨论】:
-
你为什么用 C# 标记这个?
-
因为我也接受c#中的代码示例