转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
VC++程序员应当如何阅读ADO文档         ★★★★

VC++程序员应当如何阅读ADO文档

作者:闵涛 文章来源:闵涛的学习笔记 点击数:4430 更新时间:2009/4/23 10:41:00
   }

   ::CoUninitialize();

}

 

使用GetItem(x)和Item[x]

下面是VB中关于Item()的标准与交互语法的演示。

Public Sub GetItemItem

Dim rs As New ADODB.Recordset

Dim name as String

rs = rs.Open "authors", "DSN=pubs;", adOpenDynamic, _

         adLockBatchOptimistic, adTable

name = rs(0)

'''' -or-

name = rs.Fields.Item(0)

rs(0) = "Test"

rs.UpdateBatch

'''' Restore name

rs(0) = name

rs.UpdateBatch

rs.Close

End Sub

 

以下则是VC++关于Item的演示

当访问collection中的Item时,索引值2必须被转换为long类型以确保正确的构造函数被调用。

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \

   no_namespace rename("EOF", "EndOfFile")

#include <stdio.h>

 

void main(void)

{

   CoInitialize(NULL);

   try {

      _RecordsetPtr   rs("ADODB.Recordset");

      _variant_t      vtFirstName;

 

      rs->Open("authors",

               "Provider=sqloledb;Data Source=a-tima10;"

               "Initial Catalog=pubs;User Id=sa;Password=;",

               adOpenStatic, adLockOptimistic, adCmdTable);

      rs->MoveFirst();

 

// Note 1.取得一个字段的名称

      vtFirstName = rs->Fields->GetItem((long)2)->GetValue();

   // -or-

      vtFirstName = rs->Fields->Item[(long)2]->Value;

 

      printf( "First name = ''''%s''''\n", (char*) ((_bstr_t) vtFirstName));

 

      rs->Fields->GetItem((long)2)->Value = L"TEST";

      rs->Update(vtMissing, vtMissing);

 

   // 恢复原名称

      rs->Fields->GetItem((long)2)->PutValue(vtFirstName);

      // -or-

      rs->Fields->GetItem((long)2)->Value = vtFirstName;

      rs->Update(vtMissing, vtMissing);

      rs->Close();

   }

   catch (_com_error &e)

   {

      printf("Description = ''''%s''''\n", (char*) e.Description());

   }

   ::CoUninitialize();

}

 

利用(IDispatch *)转换ADO对象的指针类型

1.在一个Variant中显式地封装一个活动的Connection对象,然后用(IDispatch *)进行类型转换确保正确的构造函数被调用。同时明确地设置第二个参数为缺省的true,使该对象的引用计数在Recordset::Open操作完成后仍得到正确的维护。

2.表达式(_bstr_t)不是一个类型转换,而是一个_variant_t的操作符,用以从中提取一个_bstr_t字符串。

表达式(char*)也不是一个类型转换,而是一个_bstr_t的操作符,用以从中提取封装在_bstr_t中的字符串的指针。

下面这些代码演示了_variant_t和_bstr_t的一些常见操作。

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \

no_namespace rename("EOF", "EndOfFile")

 

#include <stdio.h>

 

void main(void)

{

   CoInitialize(NULL);

   try

   {

      _ConnectionPtr pConn("ADODB.Connection");

      _RecordsetPtr  pRst("ADODB.Recordset");

 

      pConn->Open("Provider=sqloledb;Data Source=a-tima10;"

         "Initial Catalog=pubs;User Id=sa;Password=;",

         "", "", adConnectUnspecified);

// Note 1

      pRst->Open(

         "authors",

         _variant_t((IDispatch *) pConn, true),

         adOpenStatic,

         adLockReadOnly,

         adCmdTable);

      pRst->MoveLast();

// Note 2

      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());

  

上一页  [1] [2] [3] [4] [5] [6]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台