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;
}