VC++数据库模糊查询及精确查询示例代码分享是小编为大家带来的一个VC++电话簿程序中的模糊查询例子源代码,结合数据库,可以学习研究下简单一点的模糊查询和精确查询,希望能对大家有帮助,,赶紧来详细了解一下吧:
//精确查询 void CSearchDlg::ExactSearch() { //如果数据库没有打开,先将其打开 if(!m_database.IsOpen()) { m_database.Open(_T("addresslist")); } UpdateData(TRUE); CPersonSet m_recordset;//定义CPersonset类的对象 CMainDlg dlg; CString m_tablefield; if(m_field.Compare("姓名")==0) { m_tablefield.Format("NAME"); } if(m_field.Compare("所在城市")==0) { m_tablefield.Format("ADDRESS"); } if(m_field.Compare("手机号码")==0) { m_tablefield.Format("HANDPHONE"); } if(m_field.Compare("OICQ号码")==0) { m_tablefield.Format("OICQ"); } dlg.m_query.Format("select * from person where '%s'='%s'",m_tablefield,m_input); m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,dlg.m_query); } //模糊查询 void CSearchDlg::BlurSearch() { //确保数据源打开 if(!m_database.IsOpen()) { m_database.Open(_T("addresslist")); } UpdateData(TRUE); CPersonSet m_recordset; CMainDlg dlg; CString strSQL,m_tablefield,m_str="%"; if(m_field.Compare("姓名")==0) { m_tablefield.Format("NAME"); } if(m_field.Compare("所在城市")==0) { m_tablefield.Format("ADDRESS"); } if(m_field.Compare("手机号码")==0) { m_tablefield.Format("HANDPHONE"); } if(m_field.Compare("OICQ号码")==0) { m_tablefield.Format("OICQ"); } dlg.m_query.Format("select * from person where '%s'='%s'",m_tablefield,m_input); m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,dlg.m_query); if(m_recordset.GetRecordCount()==0) { MessageBox("no find"); } else MessageBox("find"); } ///////////////////////////////////////////////////////////////////////////// // CSearchDlg message handlers void CSearchDlg::OnOK() { // TODO: Add extra validation here if(flag)//如果flag=true,则调用精确查询 { ExactSearch(); } else//否则调用模糊查询 { BlurSearch(); } CDialog::OnOK(); } void CSearchDlg::OnCancel() { // TODO: Add extra cleanup here //退出时本窗口断开与数据库的连接 m_database.Close(); CDialog::OnCancel(); }