【发布时间】:2012-04-14 08:37:39
【问题描述】:
我正在尝试从数据库中获取一些结果,但查询失败!
String sqlFindModel = "SELECT * FROM [PRODUCT] WHERE [PN] LIKE ('*" + textBox1.Text + "*')";
当我修剪“WHERE [PN] LIKE ...”部分时,它工作正常。 当我将 LIKE 替换为 '=' 并查找确切值时,它可以工作。
我很困惑。
PS - 有趣的是,直接在 ACCESS 中查询时,必须使用 *;但是在使用 C# 连接 MS Access 时,需要使用 %... 有趣!
【问题讨论】:
-
1) 使用参数 2) % 是 LIKE 运算符,而不是 *
-
确保清理输入,否则恶意用户最终可能会通过 sql 注入攻击删除您的表或执行各种不正当的代码。
-
@Maciej 手动清理 SQL 的输入在大多数情况下注定要失败。您几乎总是最好使用参数化查询或等效查询,您无需自己负责对其进行清理。
-
您实际上可以在访问本身 (dao/ansi 89) 中使用 *,它的 oledb 使用 ansi 92 接口,所以想要 %
标签: c# .net sql ms-access oledbconnection