在 SQL 查询 C# QODBC 中为转义单引号而苦苦挣扎

Struggling with Escaping Single Quotes in SQL Query C# QODBC

提问人:Trayvhon McCall 提问时间:4/5/2018 最后编辑:marc_sTrayvhon McCall 更新时间:4/5/2018 访问量:295

问:

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

  1. 使用反斜杠

  2. 使用双单引号

法典:

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

知道我做错了什么吗?

我在下面查询以下内容:

PMI/8"X25'
C# SQL 选择 双引号

评论

0赞 Chetan 4/5/2018
应使用参数化查询来避免此类问题。
0赞 Trayvhon McCall 4/5/2018
刚刚尝试过,错误仍然发生。我可以尝试的任何其他内容。谢谢。

答:

1赞 Gaurang Dave 4/5/2018 #1

这将对你有所帮助。 必须是 。CommandTypeText

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;

评论

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