`
seawavenews
  • 浏览: 230318 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

VC数据库编程分析

阅读更多

  我们知道,在VB下进行基于ADO的编程相对比较简单,只要我们通过reference加载了适当的类型库以后,我们就可以正常的调用ADO对象,但是可能很多开发人员对于VC下的基于ADO,OLE DB的数据库开发就没有很多经验了。所以我们有必要先讨论一下VC下基于ADO开发的几种模式。

  VC下关于ADO的操作分析

  一般来说,用VC++有三种方法可以实现对ADO的操作:

  1. 通过#import方法

  2. 通过利用MFC OLE的ClassWizard

  3. 通过Windows API中COM相关的函数

在所有这三种方法种,#import是最方便的方法,它允许你产生一个类似VB的类结构。使你的开发变的很方便。

  #import方法

  在#import中,你需要提供所包含的类型库的路径和名称,它能够自动产生一个对GUIDs的定义,同时对自动生成对ADO对象的封装。同时,能够列举它在类型库中所能找到的类型,对任何你所引用的类型库,VC++会在编译的时候自动生成两个文件:

  一个头文件(.tlh),它包含了列举的类型和对类型库中对象的定义

  一个实现文件(.tli)对类型库对象模型中的方法产生封装。

比如,你在stdafx.h文件中增加对msado15.dd的import以后,VC++会产生msado15.tlh和msado15.tli两个文件。

  #import也能够使用一个新的类,_com_ptr_t,也被称为智能指针。智能指针能够自动执行QuyerInterface,AddRef和Release函数。对一个COM对象模型使用#import产生代码和VBA很类似。

  下面的代码演示了如何使用#import在你的应用中实现对ADO的操作:

  #import "c:\program files\common files\system\ado\msado15.dll" \

  no_namespace

  rename ( "EOF", "adoEOF" )

对EOF进行该名是必要的,因为典型的VC++应用都已经定义了EOF作为常数-1。

  下面分析用#import定义和初始化ADO对象

  通常来说,操作一个自动化对象需要两个步骤:定义和初始化一个用来操作COM对象的变量。通过#import你可以在一行代码完成这个工作,通过使用智能指针(_com_ptr_t)的构造函数传递一个有效的CLSID或者是PROGID。开发人员也可以通过_com_ptr_t::CreateInstance()方法来定义对象的一个示例。具体代码如下所示:

  _ConnectionPtr Conn1( __uuidof( Connection ) );

也可以采用下面的代码实现同样的功能

  _ConnectionPtr Conn1 = NULL; file://定义对象

  HRESULT hr = S_OK;

  hr = Conn1.CreateInstance( __uuidof( Connection ) ); file://创建实例

推荐采用第二种方法,因为如果用第一种方法的话不能返回一个失败的HRESULT,所以也就不能判断ADO连接对象是成功还是失败。注意这里的__uuidof( Connection)中的Connection是在.tlh文件中定义的。通过把它传递给方法CreateInstance,实际上就是创建了一个有效的ADOConnection对象。

  需要注意到的是#import中有一个属性为no_namespace,这是告诉编译器该类不在一个单独的名字空间中,使用no_namespace意味着你不需要在初始化变量的时候引用名字空间。当然如果在你的应用中需要倒入多个类型库的话,最后不要使用no_namespace,以免引起名字冲突。

  下面是简单的基于ADO应用的代码,采用了#import方法:

  #include

  #import rename("EOF", "adoEOF")

  void main()

   {

    HRESULT hr = S_OK;

    file://因为没有在#import中指定no_namespace,所以必须采用ADODB::这样的形式

    file://来作为变量类型

    ADODB::_RecordsetPtr Rs1 = NULL;

    file://通过ODBC建立ADO连接

    _bstr_t Connect( "DSN=AdoDemo;UID=sa;PWD=;" );

    _bstr_t Source ( "SELECT * FROM Authors" );

    CoInitialize();

    file://初始化Rs1对象

    hr = Rs1.CreateInstance( __uuidof( ADODB::Recordset ) );

    file://对hr的返回正确性判断省略

    Rs1->Open( Source, Connect,

    ADODB::adOpenForwardOnly,

    ADODB::adLockReadOnly, -1 );

    file://这里可以对记录集Rs1进行操作

    Rs1->Close();

    Rs1 = NULL;

    ::MessageBox( NULL, "Success!", "", MB_OK );

    CoUninitialize();

   }

 

分享到:
评论

相关推荐

    VC数据库编程技术与实例

    VC数据库编程技术与实例 VC数据库编程技术与实例 VC数据库编程技术与实例 VC数据库编程技术与实例 VC数据库编程技术与实例 VC数据库编程技术与实例 VC数据库编程技术与实例

    VC 数据库编程-介绍如何使用vc操作数据库

    介绍如何使用vc操作数据库 第1章 数据库原理与访问 第2章 COM与数据库访问 第3篇 高级话题 第4章 VC++数据库开发基础 第5章 ODBC API编程 第6章 MFC ODBC编程 第7章 DAO数据库编程 第8章 ...

    VC数据库编程实例-ORACLE数据库VC数据库编程实例

    在VC++环境中进行数据库编程,Oracle数据库是一个常见且强大的选择。本实例主要关注如何使用VC++与Oracle数据库进行交互,实现数据的存取、查询、更新和删除等操作。Oracle数据库是一个关系型数据库管理系统,提供了...

    VC数据库编程三步教学pdf+源码

    通过分析和修改这些代码,学习者能更深入地掌握VC数据库编程技巧。 9. **实战项目**:可能还包括一些实际的小项目,比如创建一个简单的数据库管理应用,让学生将所学知识运用到实践中。 总的来说,这个"VC数据库...

    VC 数据库编程三部教学(word+pdf+源码+数据库)

    《VC 数据库编程三部教学》是一套全面深入讲解如何使用Visual C++进行数据库开发的教程,涵盖了从基础到高级的各个层面。这套教程通过Word文档、PDF格式以及配套的源代码和数据库文件,为学习者提供了丰富的学习资源...

    VC 数据库编程教学

    本教程“VC 数据库编程教学”旨在帮助初学者掌握VC++环境下数据库编程的基础知识。 首先,我们要了解的是ODBC(Open Database Connectivity),它是一种通用的数据库访问接口,允许应用程序通过统一的API访问各种...

    VC 数据库编程三部教学.zip

    "VC 数据库编程三部教学"提供的资料旨在帮助学习者深入理解如何在Visual C++环境下构建数据库应用。这个压缩包包含了教学文档(可能是教程、手册或案例分析)以及配套的源代码,以便于实践操作。 首先,让我们从...

    vc.rar_VC 数据库_Vc_vc 数据库编程_vc数据库_数据库编程

    在VC数据库编程中,SQL(Structured Query Language)是必不可少的。开发者需要掌握SELECT、INSERT、UPDATE、DELETE等基本语句,以及JOIN、GROUP BY、HAVING等高级概念,以便有效地查询和修改数据。 6. **数据绑定...

    VC 数据库编程三部教学(源代码)

    本教程“VC 数据库编程三部教学(源代码)”提供了丰富的实践案例,旨在帮助学习者理解并熟练运用VC++与数据库交互的技术。 首先,我们要了解VC++中的数据库接口。在Visual C++中,Microsoft提供了MFC(Microsoft ...

    VC数据库编程详解,附源码

    "VC数据库编程详解,附源码"这个资源可能是针对初学者到中级开发者的一系列教程,通过三部分逐步讲解如何在VC++中进行数据库编程。以下是基于这个主题的详细知识点解释: 1. **ODBC(Open Database Connectivity)*...

    VC 数据库编程(Word)

    MFC实例小结 261 8.4 小结 261 第3篇 高级话题 第9章 ADO客户数据库编程 262 9.1 ADO原理 262 9.1.1 ADO与OLE DB 262 9.1.2 ADO的优越性 263 9.1.3 ADO对象模型 263 9.1.4 ADO编程 266 ...

    邮局管理源程序.zip_VC界面_vc 数据库编程_vc 数据库编程_数据库 绘图_数据库编程

    标题中的“邮局管理源程序.zip_VC界面_vc 数据库编程_vc 数据库编程_数据库 绘图_数据库编程”表明这是一个基于Visual C++(VC++)开发的邮局管理系统,该系统具有用户界面,并且着重于数据库操作和图形化展示。...

    VC知识库代码仓库.rar_vc数据库_vc数据库编程

    本资源“VC知识库代码仓库”针对VC数据库编程提供了丰富的学习资料,旨在帮助初学者快速掌握这一领域的核心概念和技术。 首先,我们来探讨一下VC数据库编程的基础。VC是一个功能强大的C++集成开发环境,它支持MFC...

    VC 数据库编程三部教学(源代码).rar

    "VC 数据库编程三部教学"涵盖了数据库应用开发的基础到高级技术,包括数据库连接、数据查询、事务处理等多个关键环节。下面将详细阐述这些知识点: 1. **ODBC(Open Database Connectivity)**:在VC++中,ODBC是...

    VC 数据库编程三部教学(DOC)

    在VC++环境中进行数据库编程是开发企业级应用的重要部分,这个“VC 数据库编程三部教学”文档集合可能涵盖了从基础到高级的多种技术。在本文中,我们将深入探讨一些关键知识点,帮助你理解并掌握VC++与数据库交互的...

    VC 数据库编程基础实例源码集.rar

    VC 数据库编程基础实例源码集,打基础很有帮助的,这些源码是:使用DAO读写Access文件、OLE查看器、Oracle数据库连接实例、SQL查询分析器、读写DBF文件、浏览数据库的程序,面向VC 新手。

    VC数据库编程案例精选

    VC数据库编程的一些经典案例,自学的好资料.

    vc6.0数据库编程

    在IT行业中,数据库编程是至关重要的技能之一,尤其是在使用Visual C++ 6.0(简称VC6.0)这样的开发工具时。这个经典的IDE虽然已有些年头,但仍然被许多开发者用来创建数据库驱动的应用程序。本文将深入探讨标题和...

    VC 数据库编程 系统介绍vc下数据库编程技术

    下面我们将深入探讨VC数据库编程的关键知识点。 1. MFC数据库类库:MFC提供了丰富的类库,使得开发者能够方便地访问ODBC(Open Database Connectivity)和ADO(ActiveX Data Objects)。ODBC是标准的数据库接口,...

    VC数据库编程三步教学

    讲VC数据库编程的 简介易懂 还不错 大家可以看看

Global site tag (gtag.js) - Google Analytics