ADO (ActiveXData Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。
ADO 使您能够编写应用程序以通过 OLE. DB提供者访问和操作数据库服务器中的数据。相对于直接访问ODBC接口,ADO更便捷。
下面介绍下在VC环境,通过ADO链接和操作SQLServer数据库的一般方法:
在VC中使用ADO数据库,主要是使用ADO所提供的Connection、Command、和Recordset对象来进行对数据库的访问。
一:导入ADO库文件
使用ADO访问数据库要用到msado15.dll库文件。这个文件的一般路径是:C:\ProgramFiles\CommonFiles\System\ado\msado15.dll
导入方法,加入如下代码段:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
语句no_namespace的作用是,设置调用的dll中的函数没有名称空间。renam("EOF","rsEOF")只是为了避免EOF和C++中EOF混淆。
二、初始化OLE/COM库环境
ADO
ADO库是一组COM动态库,程序在调用ADO前,须初始化OLE/COM库环境。可以调用WindowsAPI::Initialize(NULL),当然在使用后要记着调用::Uninitialize()释放。
三、使用ADO对象,操作数据库
1.使用Connection
代码如下:
int _tmain(int argc, _TCHAR* argv[]) { ::CoInitialize(NULL); _ConnectionPtr pConn(__uuidof(Connection)); _RecordsetPtr pRs(__uuidof(Recordset)); pConn->ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=bbs"; pConn->Open("","sa","sql2008",adConnectUnspecified); pRs = pConn->Execute("select * from article",NULL,adCmdText); while(!pRs->rsEOF) { printf((_bstr_t)pRs->GetCollect("title")); printf("\n"); pRs->MoveNext(); } pRs.Release(); pConn.Release(); ::CoUninitialize(); return 0; }
2.使用Command
int _tmain(int argc, _TCHAR* argv[]) { ::CoInitialize(NULL); _ConnectionPtr pConn(__uuidof(Connection)); _RecordsetPtr pRst(__uuidof(Recordset)); _CommandPtr pCmd(__uuidof(Command)); pConn->ConnectionString="Provider= SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=bbs"; pConn->Open("","sa","sql2008",adConnectUnspecified); pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn)); pCmd->CommandText="select * from article"; pRst=pCmd->Execute(NULL,NULL,adCmdText); while(!pRst->rsEOF) { printf((_bstr_t)pRst->GetCollect("title")); printf("\n"); pRst->MoveNext(); } pRst->Close(); pConn->Close(); pCmd.Release(); pRst.Release(); pConn.Release(); ::CoUninitialize(); return 0; }