【问题标题】:How to Escape special characters in Microsoft SQL CE如何在 Microsoft SQL CE 中转义特殊字符
【发布时间】:2016-04-25 07:04:21
【问题描述】:

注意:我使用的是 Microsoft SQL Compact Edition 3.5

我有一个用户表。我将显示名称作为用户输入,我需要查询显示名称与输入匹配的所有用户。

select TOP (1) * from users where display_name like 'Abby Parker'

这里'Abby parker'是输入

在正常情况下可以正常工作。但问题是显示名称可以包含特殊字符

例如,显示名称可以是"Abby Park#er" 或简单的"%&^%&^%#%" .上面的查询在这种情况下会失败。我已经尝试过这里指定的解决方案

Escaping special characters in a SQL LIKE statement using sql parameters

这就是我在这里构建查询的方式

    var command = ceConnection.CreateCommand();
    command.CommandText = string.Format("select TOP (1) * from {0} where {1} like '[{2}]' ", tableName,fieldName, key);
 }
  • {0}=>用户
  • {1}=>显示名称
  • {2}=>模式

提前致谢

【问题讨论】:

  • 您是如何构建查询的?能否请您发布 C# 代码,或者这个问题只是在 SQL 中?
  • 我已经更新了问题
  • 看来您链接的问题是解决方案。在这些答案中什么对你不起作用?
  • 改用this,也可以防止SQL注入攻击
  • Abby Parker 不等于 Abby Paniker,需要将 % 插入到字符串中才能知道值周围可能存在其他内容,请阅读 this

标签: c# sql database sqlcedatareader


【解决方案1】:

正如here 发布的那样,请尝试以下操作:

var command = ceConnection.CreateCommand();
command.CommandText = string.Format("select TOP (1) * from {0} where {1} like @key ", tableName,
                    fieldName);
command.Parameters.AddWithValue("@key", key);

【讨论】:

  • 这可行,但在查询中没有正确解析@tableName 和@fieldName 的小编辑。但我理解你的想法并申请@key 只有它有效!谢谢
猜你喜欢
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 2012-04-14
  • 2020-01-17
  • 2015-01-02
  • 2010-10-27
相关资源
最近更新 更多