MFC开发心得——ADO连接和操作数据库

要实现数据库的操作,首先要导入ADO动态链接库,在stdAfx.h文件中添加以下代码:

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")

上面代码的路径会根据ADO动态库(msado15.dll)位置的不同而发生改变,但是(msado15.dll)一般都是在C盘下的。


接下来就要初始化OLE/COM库环境,一般都是在主应用类的OnInitDialog()中进行初始化,即添加以下代码:

::CoInitialize(NULL);

但不能忘了要在该类的析构函数中释放占用的COM资源,使用下面的一句代码:

::CoUninitialize();

实现数据库操作主要用到两个指针:

_ConnectionPtr m_pConnection;//连接对象的指针

_RecordsetPtr m_pRecordset;//记录集对象的指针
//连接数据库
void CDataBase::OnConnectDB()
{
try
{
m_pConnection.CreateInstance(_uuidof(Connection));//创建连接对象
CString str="Provider=MSDASQL.1;Persist Security Info=False;Data Source=LibrarySystemDB";
m_pConnection->Open((_bstr_t)str,"","",adModeUnknown);//打开数据库
}
catch(_com_error e)
{
AfxMessageBox("连接失败");
return;
}
}

//断开数据库连接
void CDataBase::ExitConnect()
{
if(m_pRecordset!=NULL)
{
m_pRecordset->Close();
m_pRecordset.Release();
}
m_pConnection->Close();
m_pConnection.Release();
}
CString sql = "select * from mydatabase";
m_pRecordset.CreateInstance(_uuidof(Recordset));//创建记录集对象
m_pRecordset->Open((_bstr_t)sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);//打开记录集


下面就编写一些操作数据库的方法:

//操作数据库

void CDataBase::executeSql()

{

while(!m_pRecordset->adoEOF)//判断记录集指针是否指向结尾

{

CString str = (char*)(_bstr_t)m_pRecordset->GetCollect("name"));//获取mydatabase表中列名为name的值

m_pRecordset->PutCollect("name",(_bstr_t)"周杰伦");//修改mydatabase表中列名为name的值

m_pRecordset->MoveNext();//移向下一条记录

//向表中添加新记录

m_pRecordset->AddNew(); //向数据库添加新纪录

m_pRecordset->PutCollect("id",(_bstr_t)"123");
m_pRecordset->PutCollect("name",(_bstr_t)"周杰伦");

m_pRecordset->Update();

//也可以用m_pConnection指针操作

m_pConnection->Execute((_bstr_t)"insert into mydatabase values(123,'周杰伦')",NULL,adCmdText);

//删除表中的记录

m_pRecordset->Move((long)pos,vtMissing);//移动到pos位置的记录

m_pRecordset->Delete(adAffectCurrent);//删除当前记录

m_pRecordset->Update();

//也可以用m_pConnection指针操作

m_pConnection->Execute((_bstr_t)"delete * from mydatabase where id=123",NULL,adCmdText);

}

}

你可能感兴趣的:(MFC开发心得——ADO连接和操作数据库)