当前位置:编程学习 > VC++ >>

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.GetInterfacePtr(),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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,