VC++链接ADO数据库

第一次接触ADO数据库,自己的一点经验,在这里总结一下,以免后面忘记了,再重新来看。也许文字中有错误,请大家能给予指正。本文中使用的数据是access2000.



.h头文件中定义一下变量:

_ConnectionPtr  m_pConn;

_RecordsetPtr   m_pRecSet;

_CommandPtr     m_pComd;

.cpp源文件中实现数据库的连接

//连接数据库

bool MyDlg::ConnDb(void)

{

CString sPath;

CString Serror;

CString strSql;

//获取当前路径,并放在sPath中。

GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);

        //释放上面函数中分配的buffer内存。

sPath.ReleaseBuffer();


int nPos;

        //定位最后一个\\所在的位置

nPos=sPath.ReverseFind(‘\\‘);

        //取出最后一个\\的左侧部分

sPath=sPath.Left(nPos);

        //将数据库名字连接到sPath中。

sPath+="\\MyDateBase2000.mdb";


CFileFind finder;

        //查看此数据库文件是否存在

if(!finder.FindFile(sPath)){

MessageBox("数据库文件不存在!",NULL,0);

return FALSE;

}


CString connStr;

HRESULT hRet;  //用来接收接口返回的代码部分,如果接口返回成功,则这个值为0,如果不

                        //成功,则包含返回的错误状态信息


try

{

                //Connection代表一个windows应用程序和一个SQL服务数据库引擎实例的连接

                //__uuidof获取Connection的唯一标识符

                //CreateInstance创建一个对象实例

hRet=m_pConn.CreateInstance(__uuidof(Connection));

if(!SUCCEEDED(hRet)) return FALSE;

                //CursorLocation 是ADODC对象的游标库的位置,默认值是adUseClient

m_pConn->CursorLocation = adUseClient;

connStr.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",sPath);

                //Open调用次函数初始化一个新建的CDaoDatabase对象,这个对象代表一个现有的数

                //据库资源。

hRet=m_pConn->Open((_bstr_t)connStr,"","",adModeUnknown);

if(!SUCCEEDED(hRet)) return FALSE;

                //m_pComd命令指针

hRet=m_pComd.CreateInstance(__uuidof(Command));

if(!SUCCEEDED(hRet)) return FALSE;

m_pComd->ActiveConnection = m_pConn;

                //m_pRecSet记录集指针

                //通过使用 Recordset 属性可以使用 ADO ADODB.Recordset 对象的方法、属性和事

                //件。

hRet=m_pRecSet.CreateInstance(__uuidof(Recordset));

if(!SUCCEEDED(hRet)) return FALSE;

}

catch (_com_error e)

{

Serror.Format("数据库连接失败:%s",e.ErrorMessage());

AfxMessageBox(Serror);

}

}

//关闭数据库

void CLevelTestDialog::CloseDatabase()

{

m_pRecSet = NULL; //释放记录集

if(m_pConn->State)

{

m_pConn->Close(); //关闭连接

}

m_pConn= NULL;  //释放连接指针

}


本文出自 “8453831” 博客,请务必保留此出处http://8463831.blog.51cto.com/8453831/1530360

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。