VC用ADO打开和关闭数据库
初始化:1.找到"stdafx.h"文件,并添加代码:
#import "C:\WINDOWS\system32\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")
解释:"EOF"-"End Of Line"即是否为数据库的最后一行。
2.在"Dlg.h"文件中进行对象定义:
public:
_ConnectionPtr m_Connection; //连接数据库
_RecordsetPtr m_pRecordset; //记录集
解释:
“m_Connection”负责数据库连接的操作,以及使用m_Connection.Execute()等操作;
“m_pRecordset”负责进行数据集的绑定,一般使用为m_pRecordset.Open()等操作;
3.在"Dlg.cpp"找到"OnInitDialog()"函数,并添加代码如下:
SetIcon(m_hIcon, FALSE); // 设置小图标
///数据库初始化部分
::CoInitialize(NULL); //初始化COM环境,只在对话框建立的时候才进行
HRESULT hr;
try
{
hr = m_Connection.CreateInstance("ADODB.Connection"); //初始化Connection对象实例,不随时释放
if(SUCCEEDED(hr))
{
hr = m_Connection->Open(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyDBAccess.mdb",L"",L"",adModeUnknown);
}
m_pRecordset.CreateInstance("ADODB.Recordset"); //初始化对象数据集,不随时释放
m_pRecordset->Open("SELECT * FROM 雇员",m_Connection.GetInte易做图cePtr(),adOpenDynamic,adLockOptimistic,adCmdText); //随时可以使用m_pRecordset->Close()进行关闭
}
catch(_com_error &e)
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
解释:
::CoInitialize(NULL); -- 进行COM口的初始化,非常重要的一步;
m_Connection.CreateInstance("ADODB.Connection"); --实例化"连接";
m_Connection->Open(); --打开连接;
m_pRecordset.CreateInstance("ADODB.Recordset"); --实例化"数据集";
m_pRecordset->Open(); --绑定数据集
4.在"WM_CLOSE"对应的"OnClose()"函数中进行"释放"操作:
m_pRecordset->Close();
m_Connection->Close();
::CoUninitialize(); //关闭COM环境
CDialog::OnClose();
解释:
之所以将这部分归结到初始化中,原因在于此部分实在是很重要,并且容易遗忘,一旦忽略此部分,系统将持续报错.(关闭连接,关闭数据集,关闭COM环境)
到此为止,整个的初始化部分就完成了
摘自 踏雪无痕的专栏
补充:软件开发 , Vc ,