最近在写一个小程序,是通过数据库实现一个通讯录的功能。用的是ADO连接数据库。结果在这个过程里发生了一件很纠结的事。
我通过下面的程序段执行SQL语句:
其中变量cmd是一个字符型指针,里面放着要执行的SQL语言。但是有一段时间总是没有返回结果,我是要是实现模糊查找的,SQL语句如下:
select * from Demo where Name like "*A*"
同时在数据库里有一个SAB的名字,但是怎么没有结果。但是把该语句放到access里面执行,就有结果了……但是真是郁闷啊后来,把语句变成了:
select * from Demo where Name ="SAB"
就之执行出来结果了……当时马上根绝到,与通配符有关,于是把语句改成:
select * from Demo where Name like "%A%"
令人激动的结果出来了!我这才意识到,在C++使用的SQL语句和access里不一样!
在C++里,通过ADO执行SQL语句:%是代替多个字符,*是代替一个字符
但是在access里:%是代替一个字符,*是代替多个字符
正好反过来……