如何使用 C# 在 MS-Access 中的查询中使用带有通配符的 LIKE 运算符
Posted
技术标签:
【中文标题】如何使用 C# 在 MS-Access 中的查询中使用带有通配符的 LIKE 运算符【英文标题】:How to use LIKE operator with wildcards in query in MS-Access using c# 【发布时间】:2011-08-06 16:53:55 【问题描述】:我在我的 C# 应用程序中使用 MS Access 数据库,我需要在其中传递类似参数化的查询。我看到各种文件说我们可以使用“*”或“?”作为通配符。但是当我尝试将它添加到我的查询中时,它会抛出异常。
实际上 MSAccess 以这种格式使用... LIKE "United" 这里双引号是强制性的。 但是作为我的 C# 代码中的字符串,我无法在运行时创建 "。如果我使用" 在我的字符串中不止一次出现红色波浪。
所以我需要一种方法来使用支持通配符的查询。
我的字符串是这个
SELECT student.roll_no, student.s_name, fee.fee_date, (fee.adm_fee+fee.mon_fee+fee.lib_fee+fee.exm_fee) AS fee, class.c_name
FROM class
INNER JOIN (fee INNER JOIN student ON fee.s_id = student.s_id) ON (fee.c_id = class.c_id) AND (class.c_id = student.c_id)
WHERE student.s_name Like ""\""*" + name + "\"*";
我希望我的命令文本中的类似条件为... WHERE student.s_name Like "*xyx*"
【问题讨论】:
不确定这是否有帮助,但在您的代码中,您可以通过在前面添加反斜杠将"
放入 C# 中的字符串中。 "\""
是一个仅由 "
组成的字符串。
你能发布你的代码吗?
我认为它需要更像这样 - Like \"*"+name+"*\"";
您使用哪些通配符取决于您用于查询 Access/Jet/ACE 数据库的数据接口。如果您使用的是 DAO 或 ODBC,是的,您使用传统的 Access *
/?
通配符。但如果您使用 OLEDB,则使用 SQL 92 通配符 %
/_
。如果要编写 SQL 89 模式和 SQL 92 模式下的 Access 都可以理解的部分匹配的 SQL,可以使用专有的 ALIKE 运算符(“ANSI LIKE”),它使用 ANSI 92 通配符。
见this answer。
【参考方案1】:
我认为您可能只是字符串中的格式不正确(当然,这是假设您收到 SQL 异常,因为您没有提及有关异常的任何详细信息 :))
string commandtext =@"SELECT student.roll_no, student.s_name, fee.fee_date, (fee.adm_fee+fee.mon_fee+fee.lib_fee+fee.exm_fee) AS fee, class.c_name FROM class INNER JOIN (fee INNER JOIN student ON fee.s_id = student.s_id) ON (fee.c_id = class.c_id) AND (class.c_id = student.c_id) WHERE student.s_name Like \"*"+name+"*\"";
【讨论】:
以上是关于如何使用 C# 在 MS-Access 中的查询中使用带有通配符的 LIKE 运算符的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中更新或刷新与 Ms-access 连接的数据网格视图
如何将 MS-Access 选择查询的结果保存在 C#.net 中的变量中?
如何将日期从 C# 存储到 MS-Access 以及如何检索它?