努力在 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 中转义单引号的主要内容,如果未能解决你的问题,请参考以下文章