准备:(1).引入ado类
在mfc中可以用afxoleinit();非mfc环境中用: coinitialize(null);couninitialize(); 【程序编程相关:MFC六大关键技术剖析之动态创建】
#import "c:\program files\common files\system\ado\msado15.dll" \no_namespace \rename ("eof", "adoeof")(2).初始化com 【推荐阅读:一个简单的滑动控件CSlideTab类】
1.连接与关闭数据库 (1)连接 【扩展信息:《循序渐进学用Visual C++ 6.】
(3)#import 包含后就可以用3个智能指针了:_connectionptr._recordsetptr与_commandptr
例子:连接access数据库afxoleinit();//初始化hresult hr;try{hr = m_pconnection.createinstance("adodb.connection");///创建connection对象if(succeeded(hr)){m_pconnection->connectiontimeout = 0;hr = m_pconnection->open( "provider=microsoft.jet.oledb.4.0;data source=db.mdb", "", "", admodeunknown);//m_pconnection->putdefaultdatabase ((_bstr_t)"db");//设置默认数据库
m_pcommand.createinstance(__uuidof(command));m_pcommand->commandtimeout = 5;m_pcommand->activeconnection = m_pconnection;}}catch(_com_error e)///捕捉异常{cstring errormessage;errormessage.format("连接数据库失败!\r\n错误信息:%s",e.errormessage());afxmessagebox(errormessage);///显示错误信息}
(2).关闭
//如果数据库连接有效if( m_pconnection->state ) m_pconnection->close();m_pconnection = null;
(3).设置连接时间 //设置连接时间----------------------------------- pconnection->put_connectiontimeout(long(5));2.打开一个结果集
(1)打开,首先创建一个_recordsetptr实例,然后调用open()得到一条sql语句的执行结果_recordsetptrm_precordset;m_precordset.createinstance(__uuidof(recordset));
// 在ado操作中建议语句中要常用try...catch()来捕获错误信息,// 因为它有时会经常出现一些意想不到的错误.... 下一页