301上位机VC MFC使用ADO匹配字符搜索数据
ADO匹配字符搜索数据
功能展示
ADO数据库程序中,对字符的搜索也是很常用的功能,我们当前例程实现对指定字符的搜索,效果如图,要编辑框内输入要搜索的名字,可以点击按钮进行模糊搜索,并将搜索的结果显示在列表框中,如果选中了选择框<完全匹配姓名>则进行精准搜索;
要点提示
进行完全匹配搜索可以使用等号“=”,例如搜索”张三”的姓名,可以使用select * from students where name=‘张三’
模糊的查找可以借助’like’,字符串’%’ 和’_’,例如搜索姓名中包含“李”的姓名,可以使用select * from students where name like '%李’
实现功能
1.新建基于对话框的应用程序
2.在stdafx.h中加入ADO支持库
#import “c:\program files\common files\system\ado\msado15.dll” no_namespace rename (“EOF”, “adoEOF”) 及#include "icrsint.h"//IADORecordBinding 头文件
3.主对话框中添加变量public:
private:_ConnectionPtr m_pConn;_RecordsetPtr m_pRst;; 并初始化
::CoInitialize(NULL);
_variant_t vFieldValue;
CString strFieldValue;
m_pConn.CreateInstance(__uuidof(Connection));
try
{
m_pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=stuinf.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
}
m_pRst.CreateInstance(__uuidof(Recordset));
m_pRst->Open("select * from students",m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
4.按例程界面添加一编辑框IDC_EDIT,选择框IDC_CHECK,列表框IDC_LIST,及一按钮<搜索匹配姓名>关联按钮的点击函数
void CGkbc8Dlg::OnQuery()
{
m_pRst->Close();
CListBox *pListBox = (CListBox *)GetDlgItem(IDC_LIST);
pListBox->ResetContent();
CString sql,sName;
GetDlgItemText(IDC_EDIT,sName);
CButton* pCheck = (CButton*)GetDlgItem(IDC_CHECK);
if(pCheck->GetCheck())
{
//完全匹配检查
sql.Format("select * from students where name='%s'",sName);
}
else
{
//模糊匹配
sql.Format("%s",sName);
sql="select * from students where name like '%"+sql+"%'";
}
BSTR bssql=sql.AllocSysString();
m_pRst->Open((_variant_t)bssql,m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
//显示结果
while(VARIANT_FALSE==m_pRst->EndOfFile)
{
_variant_t vFieldValue;
CString ID,Name,EnterTm;
CString Item;
vFieldValue=m_pRst->GetCollect("id");
ID=(char*)_bstr_t(vFieldValue);
vFieldValue.Clear();
vFieldValue=m_pRst->GetCollect("name");
Name=(char*)_bstr_t(vFieldValue);
vFieldValue.Clear();
vFieldValue=m_pRst->GetCollect("btime");
EnterTm=(char*)_bstr_t(vFieldValue);
vFieldValue.Clear();
Item.Format("学号为%s的%s同学的入学时间是%s",ID,Name,EnterTm);
pListBox->AddString(Item);
m_pRst->MoveNext();
}
}
5,最后是程序退出时关闭记录集,即在程序 的OnDestroy()函数中添加代码
void CGkbc8Dlg::OnDestroy()
{
CDialog::OnDestroy();
m_pRst->Close();
m_pConn->Close();
::CoUninitialize();
}
我们来演示整个功能实现过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|