WEB开发网
开发学院软件开发VC ADO VC++ Extensions入门 阅读

ADO VC++ Extensions入门

 2010-06-04 20:39:32 来源:WEB开发网   
核心提示:源程序代码如下:#import "C:Program FilesCommon FilesSystemADOmsado15.dll"no_namespace rename("EOF", "EndOfFile")#include 〈stdio.h〉#include

源程序代码如下:

#import "C:Program FilesCommon FilesSystemADOmsado15.dll"
no_namespace rename("EOF", "EndOfFile")
#include 〈stdio.h〉
#include 〈ole2.h〉
#include "ADOtest.h"
void main()
{
if(FAILED(::CoInitialize(NULL)))
return;
// 定义ADO 智能指针类的实例,并初始化
RecordsetPtr pRstAuthors = NULL;
//定义其它变量
//接口指针声明
IADORecordBinding picRs = NULL; CAuthorsRs authorsrs;
//ADO函数要返回HRESULT,宏代码可以帮我们解释HRESULT的含义
HRESULT hr;
// 打开 位于nt_sqlserver服务器上的 pubs数据库中的 Authors 表
bstr_t strCnn("Provider=sqloledb;Data Source=nt_sqlserver;"
"Initial Catalog=pubs;User Id=sa;Password=;");
try
{
// 从 Authors 表中打开记录集
if FAILED(hr = pRstAuthors.CreateInstance(__uuidof(Recordset)))
com_issue_error(hr);
pRstAuthors-〉CursorType = adOpenStatic;
// 使用 client 游标 ,从而可以使用 AbsolutePosition 属性pRstAuthors-〉CursorLocation = adUseClient;
pRstAuthors-〉Open("SELECT au_fname, au_lname, city, "
"state FROM Authors ORDER BY au_id", strCnn, adOpenStatic,
adLockReadOnly, adCmdText);
// 打开一个 IADORecordBinding 接口指针(用来对记录集和C++类的绑定)
if FAILED(hr = pRstAuthors-〉QueryInterface(_uuidof(IADORecordBinding),(LPVOID)&&picRs))
_com_issue_error(hr);
// 调用 BindToRecordset 接口方法可使 Recordset 字段关联(或绑定)到C/C++ 变量,无论何时更改 Recordset 对象的当前行,C/C++ 变量都将自动更新
if FAILED(hr = picRs-〉BindToRecordset(&&authorsrs))
_com_issue_error(hr);
pRstAuthors-〉MoveFirst();
while(true)
{
// 显示当前记录的信息
printf("Record %ld of %dn", pRstAuthors-〉AbsolutePosition, pRstAuthors-〉RecordCount);
printf("Author: %s %sn ",
authorsrs.l_fnameStatus == adFldOK ?
authorsrs.m_au_fname : "〈NULL〉",
authorsrs.l_lnameStatus == adFldOK ?
authorsrs.m_au_lname : "〈NULL〉");
printf("Location: %s, %sn",
authorsrs.l_cityStatus == adFldOK ?
authorsrs.m_au_city : "〈NULL〉",
authorsrs.l_stateStatus == adFldOK ?
authorsrs.m_au_state : "〈NULL〉");
pRstAuthors-〉MoveNext();
if(pRstAuthors-〉EndOfFile)
{
break;
}
}
// 退出前释放对象
pRstAuthors-〉Close();
// 这里释放 IADORecordset 接口
if (picRs)
picRs-〉Release();
}
catch(_com_error &&e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
printf("Errorn");
printf("tCode = %08lxn", e.Error());
printf("tCode meaning = %sn", e.ErrorMessage());
printf("tSource = %sn", (LPCSTR) bstrSource);
printf("tDescription = %sn", (LPCSTR) bstrDescription);
}
::CoUninitialize();
}

编译链接之后,程序就可以运行了。这个例子的作用是将SQL SERVER中pubs库中authors表中的记录按字段au_id排序后,将记录在记录集中的位置、姓名、城市等几个字段的内容依次显示在屏幕上。

上一页  1 2 

Tags:ADO VC Extensions

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接