select * from product where product_name like '*金*'
这句sql语句,直接在Access数据库中执行正常,有结果。
但是在C# 代码里组装该sql语句,然后通过OleDb连接Access执行查询,却一直没有结果。
经过查阅资料发现:
这是因为运行这些SQL语句时所使用的数据库引擎语法不同所致,ANSI-89 SQL 语法,通配符为*。 ANSI-92 SQL 语法,通配符为“%”。
直接在ACCESS里面通配符为“ * ”号;在程序里面如果使用ADO等数据访问对象访问编辑ACCESS数据库里的数据,则通配符为“%”号。
一般来讲直接在ACCESS对象(例如查询、窗体、表等)里面应该使用“*”号通配符;如果在程序里使用数据访问API,例如ADO等间接访问ACCESS,就应该使用“%”通配符。
本文介绍了在C#中通过OleDb连接Access数据库时,使用LIKE通配符进行查询遇到的问题。当在Access数据库中直接执行SQL`select * from product where product_name like '*金*'`可以正常返回结果,但在C#代码中执行相同的查询却无结果。问题在于ANSI-89和ANSI-92 SQL语法中通配符的区别,前者使用*,后者使用%。因此,解决方法是将C#中的SQL语句中的*替换为%。

1206

被折叠的 条评论
为什么被折叠?



