vc++连接数据库 个人总结

第一次接触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;  //释放连接指针

}


猜你喜欢

转载自blog.csdn.net/lianxue1986/article/details/38140929