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环境)

到此为止,整个的初始化部分就完成了,下面就带大家进入下面一个部分,ADO的处理.

你可能感兴趣的:(c,数据库,windows,null,System)