努力在 SQL 查询 C# QODBC 中转义单引号

Posted

技术标签:

【中文标题】努力在 SQL 查询 C# QODBC 中转义单引号【英文标题】:Struggling with Escaping Single Quotes in SQL Query C# QODBC 【发布时间】:2018-09-14 17:48:39 【问题描述】:

我正在尝试运行包含单引号的 SQL 查询。我正在使用 qodbc,当我尝试使用单引号成功时:

    使用反斜杠

    使用双单引号

代码:

string getQBInventory = "SELECT ListId, Name, QuantityOnHand from Item WHERE Name LIKE '"+ "PMI / 8\"X25''" + "%' AND IncomeAccountRefFullName <> 'Job Income' AND isActive <> 0";

知道我做错了什么吗?

我正在查询以下内容:

PMI/8"X25'

【问题讨论】:

您应该使用参数化查询来避免此类问题。 刚刚尝试,仍然出现错误。还有什么我可以尝试的。谢谢。 【参考方案1】:

这将对您有所帮助。 CommandType 必须是 Text

string getQBInventory = "SELECT ListId, Name, QuantityOnHand from Item WHERE Name LIKE ? AND IncomeAccountRefFullName <> ? AND isActive <> ?"

OdbcCommand exe = new OdbcCommand(getQBInventory, conn);
exe.CommandType = CommandType.Text;

exe.Parameters.Add("P1", OdbcType.VarChar).Value = "PMI/8\"X25\'\'";
exe.Parameters.Add("P2", OdbcType.VarChar).Value = "Job Income";
exe.Parameters.Add("P3", OdbcType.Int).Value = 0;

【讨论】:

错误:“字符串 'PMI/8"X25" 后的未闭合引号。'PMI/8"X25" 附近的语法不正确。感谢您的帮助,但是我在执行后收到了上面的消息。 @TrayvhonMcCall 我更新了答案(字符串值格式)。请使用此值重试。 exe.Parameters.Add("P1", OdbcType.VarChar).Value = "PMI/8\"X25\'\'"; 好的,现在重试我的查询在末尾寻找额外的单引号 我建议您使用参数进行查询,因为这样更安全。要检查任何字符串与 SQL 的兼容性,请尝试使用字符串执行 select 语句。它将在您的字符串中显示错误。例如选择'PMI/8"X25''' 如果有用,请点赞/标记为答案,以便将来的用户可以从这里参考。

以上是关于努力在 SQL 查询 C# QODBC 中转义单引号的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 中转义单引号

PL/SQL,如何在字符串中转义单引号?

PL/SQL,如何在字符串中转义单引号?

php 使用PHP在XPath查询中转义单引号和双引号的函数

如何在 Sybase 中转义单引号

如何在 JavaScript 中转义单引号 ( ' )? [复制]