【发布时间】:2023-04-08 04:16:01
【问题描述】:
我在我的 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 通配符。