【VC开源代码栏目提醒】:网学会员,鉴于大家对VC开源代码十分关注,论文会员在此为大家搜集整理了“ADOWin32ConsoleTypeTranslation.cpp”一文,供大家参考学习!
// ADOWin32ConsoleTypeTranslation.cpp : 定义控制台应用程序的入口点。
//variant_t和_bstr_t类的强制类型转换
#include "stdafx.h"
#include <windows.h>
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF")
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
try
{
_ConnectionPtr pConn("ADODB.Connection");
_RecordsetPtr pRst("ADODB.Recordset");
pConn->Open("Provider=SQLOLEDB;SERVER=localhost;DATABASE=pubs;User Id=sa;Password=;","","", adConnectUnspecified);
//在一个Variant中显式地封装一个活动的Connection对象,然后用(IDispatch *)
//进行类型转换确保正确的构造函数被调用。同时明确地设置第二个参数为缺省的true,
//使该对象的引用计数在Recordset::Open操作完成后仍得到正确的维护。
pRst->Open("authors", _variant_t((IDispatch *) pConn, true),adOpenStatic, adLockReadOnly,adCmdTable);
pRst->MoveLast();
// 表达式(_bstr_t)不是一个类型转换,而是一个_variant_t的操作符,用以从中提取
//一个_bstr_t字符串; 表达式(char*)也不是一个类型转换,而是一个_bstr_t的操作符,
//用以从中提取封装在_bstr_t中的字符串的指针。
printf("Last name is '%s %s'\n",(char*) ((_bstr_t) pRst->GetFields()->GetItem("au_fname")->GetValue()),
(char*) ((_bstr_t) pRst->Fields->Item["au_lname"]->Value));
pRst->Close();
pConn->Close();
}
catch (_com_error &e)
{
printf("Description = '%s'\n", (char*) e.Description());
}
::CoUninitialize();
getchar();
}
上一篇:
ADOWin32ConsoleTransaction.cpp
下一篇:
致享和威驰哪个好点?冲着安全和空间 推荐致享