【发布时间】:2017-12-25 20:17:47
【问题描述】:
这是我从 c# 生成的查询
Select * from contac
where ((LCASE(first_name) = '' and LCASE(sur_name) = 'bn d. o’connor & co' )
or
(LCASE(first_name) = 'bn d. o’connor & co' and LCASE(sur_name) = '' ))
and
Medicom_GP_KEY is null
但是如果我执行并填充数据表意味着它会显示类似的错误
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在 'connor & co' 附近使用正确的语法)或 (LCASE(first_name) = 'bn d. o'connor & co' 和 LCASE(sur_' 在第 1 行
不知道哪里出错了。
【问题讨论】:
-
使用准备好的语句。它可以防止 SQL 注入并转义特殊字符
-
错误信息告诉你错误发生的确切位置。
-
’这不是单引号吗?你需要逃避它 -
在 CP1252 中,撇号
’与单引号'具有相同的代码。可能这是语法错误的原因,应该转义或使用带有准备语句的参数化查询。 -
是的,但我实际上使用
dr["GP FirstName"].ToString().ToLower().Replace("'", @"\'")来逃避
标签: c# mysql sql windows-applications