第一步:在stdafx.h中添加:
注意:此处应加在最后一个#include下方,以免编译出错
#import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")
第二部:在***Dlg.h中添加
_ConnectionPtr m_pConnection;
第三步:在***Dlg.cpp的OnInitDialog()中添加
注意:
Database:数据库名称,uid:登陆账号,pwd:登陆密码
::CoInitialize(NULL); //初始化OLE/COM库环境
HRESULT hr = NULL;
try{
hr = m_pConnection.CreateInstance(__uuidof(Connection));//创建连接对象实例
if (SUCCEEDED(hr))
{
_bstr_t strConnect = "Provider=SQLOLEDB;Server=(local);Database=***;uid=***;pwd=***";//初始化连 //接
hr = m_pConnection->Open(strConnect, "", "", adConnectUnspecified); //打开数据库
if (FAILED(hr)){
AfxMessageBox(_T("Open Failed!"));
return FALSE;
}
}
else
{
AfxMessageBox(_T("Create instance of connection failed!"));
return FALSE;
}
}
catch (_com_error e){
CString temp;
temp.Format(L"数据库连接错误\r\n错误信息为:%s", e.ErrorMessage());
AfxMessageBox(temp);
return FALSE;
}
第四步:在按钮中通过命令和记录集操作数据库
创建数据表:
/*创建数据表*/
try{
CString CmdStr;
_RecordsetPtr pRst(__uuidof(Recordset)); //实例化一个Recordset对象pRst
_CommandPtr pCmd(__uuidof(Command)); //实例化一个Command对象pCmd
pCmd->put_ActiveConnection(_variant_t((IDispatch*)m_pConnection));
/*创建数据表*/
CmdStr = _T("CREATE TABLE userinfo( \
id int PRIMARY KEY,\
name varchar(20),\
password varchar(20), \
email varchar(20), \
QQ varchar(20),\
tel varchar(20))");
pCmd->CommandText = (_bstr_t)CmdStr;
pCmd->Execute(NULL, NULL, adCmdText);
pRst.Release(); //释放记录集
pCmd.Release(); //释放命令
}
catch (_com_error e){
CString errostr;
errostr.Format(L"查询失败。\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errostr);
}
/*添加一行数据*/
try{
CString CmdStr;
_RecordsetPtr pRst(__uuidof(Recordset)); //实例化一个Recordset对象pRst
_CommandPtr pCmd(__uuidof(Command)); //实例化一个Command对象pCmd
pCmd->put_ActiveConnection(_variant_t((IDispatch*)m_pConnection));
CmdStr = _T("INSERT INTO userinfo(id,name,password,email,QQ,tel)VALUES(88888888,'大坏蛋','男','88888888','88888888 ','88888888')");
pCmd->CommandText = (_bstr_t)CmdStr;
pCmd->Execute(NULL, NULL, adCmdText);
pRst.Release(); //释放记录集
pCmd.Release(); //释放命令
}
catch (_com_error e){
CString errostr;
errostr.Format(L"查询失败。\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errostr);
}
/*修改数据*/
try{
CString CmdStr;
_RecordsetPtr pRst(__uuidof(Recordset)); //实例化一个Recordset对象pRst
_CommandPtr pCmd(__uuidof(Command)); //实例化一个Command对象pCmd
pCmd->put_ActiveConnection(_variant_t((IDispatch*)m_pConnection));
CmdStr = _T("UPDATE userinfo SET name = '大坏蛋' WHERE id=88888888");
pCmd->CommandText = (_bstr_t)CmdStr;
pCmd->Execute(NULL, NULL, adCmdText);
pRst.Release(); //释放记录集
pCmd.Release(); //释放命令
}
catch (_com_error e){
CString errostr;
errostr.Format(L"查询失败。\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errostr);
}
删除数据:
/*删除数据*/
try{
CString CmdStr;
_RecordsetPtr pRst(__uuidof(Recordset)); //实例化一个Recordset对象pRst
_CommandPtr pCmd(__uuidof(Command)); //实例化一个Command对象pCmd
pCmd->put_ActiveConnection(_variant_t((IDispatch*)m_pConnection));
CmdStr = _T("DELETE FROM userinfo WHERE id = 88888888");
pCmd->CommandText = (_bstr_t)CmdStr;
pCmd->Execute(NULL, NULL, adCmdText);
pRst.Release(); //释放记录集
pCmd.Release(); //释放命令
}
catch (_com_error e){
CString errostr;
errostr.Format(L"查询失败。\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errostr);
}
查询数据:
/*查询数据*/
try{
CString CmdStr;
_RecordsetPtr pRst(__uuidof(Recordset)); //实例化一个Recordset对象pRst
_CommandPtr pCmd(__uuidof(Command)); //实例化一个Command对象pCmd
pCmd->put_ActiveConnection(_variant_t((IDispatch*)m_pConnection));
CmdStr = _T("SELECT * FROM userinfo");
pCmd->CommandText = (_bstr_t)CmdStr;
pRst = pCmd->Execute(NULL, NULL, adCmdText);
while(!pRst->adoEOF)
{
//读取内容
CString str = (_bstr_t)pRst->GetCollect("id") + " " + (_bstr_t)pRst->GetCollect("name") + " " + (_bstr_t) pRst->GetCollect("email") + " " + (_bstr_t)pRst->GetCollect("QQ");
pRst->MoveNext(); //下移一个
}
pRst.Release(); //释放记录集
pCmd.Release(); //释放命令
}
catch (_com_error e){
CString errostr;
errostr.Format(L"查询失败。\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errostr);
}