VC中ADO数据库连接

heizi 2002-06-24 12:04:35
条件查询
CString s="";
if(!dlg.m_name .IsEmpty ()){
s=s+"AND 姓名= '"+dlg.m_name+"%'";
}
if(!dlg.m_addr .IsEmpty ()){
s=s+"AND 地址='"+dlg.m_addr+ "%' ";
}
_variant_t str="SELECT * FROM 信息资料 where s";
运行查询时出错------(至少一个参数没有被指定值)
以及其中的%不起作用---怎么回事阿
求教!!!
...全文
30 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang1000 2002-06-24
  • 打赏
  • 举报
回复
_variant_t str="SELECT * FROM 信息资料 where s";???
s=s+_T("AND 姓名 like .....
第一个条件怎么有"AND"?
而且我都没用%
lanlijing 2002-06-24
  • 打赏
  • 举报
回复
你这样试试:
CString s=_T("");
if(!dlg.m_name .IsEmpty ()){
s=s+_T("AND 姓名 like '%")+dlg.m_name+_T("%'");
}
if(!dlg.m_addr .IsEmpty ()){
s=s+_T("AND 地址 like '%")+dlg.m_addr+ _T("%'");
}
CString str="SELECT * FROM 信息资料 where "+s;
pRs->((_variant_t)s,...)//pRs是你的_RecordsetPtr

据我所知,模糊查询好象是要用like,而不是"=",
最后的一句不能那么连。
Everyday 2002-06-24
  • 打赏
  • 举报
回复
对了,还有第一个and要去掉
Everyday 2002-06-24
  • 打赏
  • 举报
回复
在你的sql语句中like的匹配只要后面一个%就行了,前面那个就不用了吧,如果前后都用%那只要匹配串在被匹配串中就会把该条记录选出来的比如有人叫“陈杨天”而又有人叫“杨天”,那么如果你在条件中是“杨天”的话,前一条记录也选出来了,这肯定是你不想看到的,我试了一下,其他的跟lanlijing一样就可以了

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧