最近要做个数据管理系统,要求用MFC实现。一直以来都是习惯了ADO.NET,换了这个真的很不习惯..........下面说说连接的步骤。
在StdAfx.h加入:#import "c:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","rsEOF")
具体路径因你机子系统而异。
然后初始化并创建一个连接对象喝一个数据记录对象
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
下面是数据库的地址,我放在了工程的文件夹下。话说我一开始是放在了DEBUG下,编译通过,运行却出错。搞了我老半天,郁闷。路径可以直接写info.mdb,不过必须把MDB放到DEBUG文件夹下,而且手动运行DEBUG里面的EXE程序,否则也错,残念...........
char path[ MAX_PATH ] = { '/0' };
CString DataSource="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
GetCurrentDirectory( MAX_PATH, path );
CString pathstr;
pathstr.Format("%s",path);
DataSource +=pathstr;
DataSource += "//info.mdb";
DataSource +=";Persist Security Info=False";
下面打开连接
pConn->ConnectionString=(_bstr_t)DataSource;
pConn->Open("","","",adConnectUnspecified);
接着进行查询看看。这里我在对话框上添加了两个文本框并分别添加变量m_no和m_name,一个输入编号 一个显示姓名。
CString strSQL,strtem;
strSQL.Format("select * from Users where UserId=%s",m_no);
pRst=pConn->Execute((_bstr_t)strSQL,NULL,adCmdText);
while(!pRst->rsEOF)
{
strtem.Format((_bstr_t)pRst->GetCollect("UserName"));
m_name=strtem;
pRst->MoveNext();
}
最后关闭
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
要记得在执行这些代码前加入UpdateData(TRUE);后面显示出来再UpdateData(FALSE);
解释:
UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。
UpdateData(false);//用于将数据在屏幕中对应控件中显示出来