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

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3561 更新时间:2009/4/23 10:41:00
; _RecordsetPtr   pRs("ADODB.Recordset");

   _ConnectionPtr  pCn("ADODB.Connection");

   _variant_t      vtTableName("authors"),

                   vtCriteria;

   long            ix[1];

   SAFEARRAY       *pSa = NULL;

 

   pCn->Open("DSN=pubs;User ID=sa;pwd=;Provider=MSDASQL;", "", "",

               adConnectUnspecified);

// Note 2, Note 3

   pSa = SafeArrayCreateVector(VT_VARIANT, 1, 4);

   if (!pSa) _com_issue_error(E_OUTOFMEMORY);

 

// 为第三个元素赋值TABLE_NAME(索引值2).

   ix[0] = 2;     

   TESTHR(SafeArrayPutElement(pSa, ix, &vtTableName));

 

// 由于Variant没有SafeArray的构造函数,所以手工设置Variant的数据类型和值。

   vtCriteria.vt = VT_ARRAY | VT_VARIANT;

   vtCriteria.parray = pSa;

 

   pRs = pCn->OpenSchema(adSchemaColumns, vtCriteria, vtMissing);

 

   long limit = pRs->GetFields()->Count;

   for (long x = 0; x < limit; x++)

      printf("%d: %s\n", x+1,

         ((char*) pRs->GetFields()->Item[x]->Name));

// Note 4

   pRs->Close();

   pCn->Close();

   }

   catch (_com_error &e)

   {

   printf("Error:\n");

   printf("Code = %08lx\n", e.Error());

   printf("Code meaning = %s\n", (char*) e.ErrorMessage());

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

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

   }

   CoUninitialize();

}

 

使用属性的Get/Put/PutRef

在VB中,属性的名称并未被检验,无论它是被读取、被赋值,或者赋予一个引用。

Public Sub GetPutPutRef

Dim rs As New ADODB.Recordset

Dim cn As New ADODB.Connection

Dim sz as Integer

cn.Open "Provider=sqloledb;Data Source=yourserver;" & _

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

rs.PageSize = 10

sz = rs.PageSize

rs.ActiveConnection = cn

rs.Open "authors",,adOpenStatic

'''' ...

rs.Close

cn.Close

End Sub

 

以下是VC++关于Get/Put/PutRefProperty的演示

1.这个例子演示了省略字符串参数的两种形式:一种是采用常量strMissing,另一种则是由编译器自动生成一个临时的存在于Open方法使用期间的_bstr_t。

2.因为操作数已经是(IDispatch *)的指针,所以没有必要将rs->PutRefActiveConnection(cn)的操作数再进行类型转换。

#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  cn("ADODB.Connection");

      _RecordsetPtr   rs("ADODB.Recordset");

      _bstr_t         strMissing(L"");

      long            oldPgSz = 0,

                      newPgSz = 5;

 

// Note 1

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

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

         strMissing, "",

         adConnectUnspecified);

  

      oldPgSz = rs->GetPageSize();

   // -or-

      oldPgSz = rs->PageSize;

 

      rs->PutPageSize(newPgSz);

   // -or-

      rs->PageSize = newPgSz;

 

// Note 2

      rs->PutRefActiveConnection( cn );

      rs->Open("authors", vtMissing, adOpenStatic, adLockReadOnly,

               adCmdTable);

      printf("Original pagesize = %d, new pagesize = %d\n", oldPgSz,

               rs->GetPageSize());

      rs->Close();

      cn->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……
    咸宁网络警察报警平台