⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0505002.htm

📁 VC知识库5_chm_decompile_20040520_210715
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title></title>
<link rel="stylesheet" type="text/css" href="../../vckbase.css">
</head>

<body>

<div align="justify">
  <table border="0" width="100%" class="font" height="57">
    <tr>
      <td width="27%" height="6" class="bigfont" bgcolor="#B8CFE7" align="center" bordercolor="#800080">
      <font color="#800080">VC知识库(五)</font>
      </td>
      <td width="73%" height="6" class="bigfont" bgcolor="#B8CFE7" align="center" bordercolor="#800080">
      <font color="#800080">www.vckbase.com</font>
      </td>
    </tr>
    <tr>
      <td width="100%" height="4" class="header" valign="top" align="center" colspan="2">
      <hr>
      </td>
    </tr>
    <tr>
      <td width="100%" height="17" class="header" valign="top" align="center" colspan="2">
  <b><big><strong><font face="隶书"
  LANG="ZH-CN">在</font><font face="隶书">VC<font LANG="ZH-CN">中使用</font>ADO<font
  LANG="ZH-CN">开发数据库应用程序</font></font></strong></big></b>
      </td>
    </tr>
    <tr>
      <td width="100%" height="17" class="info" align="center" colspan="2">
      <font LANG="ZH-CN"><b>Alpha,Beta</b></font>
      </td>  
    </tr>  
    <tr> 
      <td width="100%" height="22" class="font" colspan="2">
        <hr>
      </td>  
    </tr> 
    <tr> 
      <td width="100%" height="5" class="font" colspan="2"> 
  <p ALIGN="JUSTIFY"><b><font LANG="ZH-CN">一、</font>ADO<font LANG="ZH-CN">概述</font></b></p>
  <p ALIGN="JUSTIFY">ADO<font LANG="ZH-CN">是</font>Microsoft<font LANG="ZH-CN">为最新和最强大的数据访问范例</font> 
  OLE DB <font LANG="ZH-CN">而设计的,是一个便于使用的应用程序层接口。</font>ADO  
  <font LANG="ZH-CN">使您能够编写应用程序以通过</font> OLE.DB <font 
  LANG="ZH-CN">提供者访问和操作数据库服务器中的数据。</font>ADO <font 
  LANG="ZH-CN">最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。</font>ADO  
  <font LANG="ZH-CN">在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。之所以称为</font>  
  ADO<font LANG="ZH-CN">,是用了一个比较熟悉的暗喻,</font>OLE <font 
  LANG="ZH-CN">自动化接口。</font></p> 
  <p ALIGN="JUSTIFY">OLE DB<font LANG="ZH-CN">是一组</font>”<font LANG="ZH-CN">组件对象模型</font>”(COM)  
  <font LANG="ZH-CN">接口,是新的数据库低层接口,它封装了</font>ODBC<font 
  LANG="ZH-CN">的功能,并以统一的方式访问存储在不同信息源中的数据。</font>OLE  
  DB<font LANG="ZH-CN">是</font>Microsoft UDA(Universal Data Access)<font LANG="ZH-CN">策略的技术基础。</font>OLE  
  DB <font LANG="ZH-CN">为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。也就是说,</font>OLE  
  DB <font LANG="ZH-CN">并不局限于</font> ISAM<font LANG="ZH-CN">、</font>Jet <font 
  LANG="ZH-CN">甚至关系数据源,它能够处理任何类型的数据,而不考虑它们的格式和存储方法。在实际应用中,这种多样性意味着可以访问驻留在</font>  
  Excel <font LANG="ZH-CN">电子数据表、文本文件、电子邮件</font>/<font 
  LANG="ZH-CN">目录服务甚至邮件服务器,诸如</font> Microsoft Exchange <font 
  LANG="ZH-CN">中的数据。但是,</font>OLE DB <font LANG="ZH-CN">应用程序编程接口的目的是为各种应用程序提供最佳的功能,它并不符合简单化的要求。您需要的</font>API  
  <font LANG="ZH-CN">应该是一座连接应用程序和</font> OLE DB <font LANG="ZH-CN">的桥梁,这就是</font>  
  ActiveX Data Objects (ADO)<font LANG="ZH-CN">。</p> 
  <b><p ALIGN="JUSTIFY">二、在</b></font><b>VC<font LANG="ZH-CN">中使用</font>ADO</p> 
  <p ALIGN="JUSTIFY">1<font LANG="ZH-CN">、引入</font>ADO<font LANG="ZH-CN">库文件</font></b></p> 
      <font LANG="ZH-CN"> 
  <p ALIGN="JUSTIFY">使用</font>ADO<font LANG="ZH-CN">前必须在工程的</font>stdafx.h<font 
  LANG="ZH-CN">文件里用直接引入符号</font>#import<font LANG="ZH-CN">引入</font>ADO<font 
  LANG="ZH-CN">库文件</font>,<font LANG="ZH-CN">以使编译器能正确编译。代码如下所示:</p> 
  <b><p ALIGN="JUSTIFY">代码</b></font><b>1<font LANG="ZH-CN">:用</font>#import<font 
  LANG="ZH-CN">引入</font>ADO<font LANG="ZH-CN">库文件</font></p> 
  <p ALIGN="JUSTIFY">#import &quot;c:\program files\common  
  files\system\ado\msado15.dll&quot; </p> 
  <p ALIGN="JUSTIFY">no_namespaces rename(&quot;EOF&quot; adoEOF&quot;)</b><font 
  LANG="ZH-CN"></p> 
  <p ALIGN="JUSTIFY">这行语句声明在工程中使用</font>ADO<font LANG="ZH-CN">,但不使用</font>ADO<font 
  LANG="ZH-CN">的名字空间,并且为了避免常数冲突,将常数</font>EOF<font 
  LANG="ZH-CN">改名为</font>adoEOF<font LANG="ZH-CN">。现在不需添加另外的头文件,就可以使用</font>ADO<font 
  LANG="ZH-CN">接口了。</font><b></p> 
  <p ALIGN="JUSTIFY">2<font LANG="ZH-CN">、初始化</font>OLE/COM<font LANG="ZH-CN">库环境</font></b></p> 
      <font LANG="ZH-CN"> 
  <p ALIGN="JUSTIFY">必须注意的是,</font>ADO<font LANG="ZH-CN">库是一组</font>COM<font 
  LANG="ZH-CN">动态库,这意味应用程序在调用</font>ADO<font LANG="ZH-CN">前,必须初始化</font>OLE/COM<font 
  LANG="ZH-CN">库环境。在</font>MFC<font LANG="ZH-CN">应用程序里,一个比较好的方法是在应用程序主类的</font>InitInstance<font 
  LANG="ZH-CN">成员函数里初始化</font>OLE/COM<font LANG="ZH-CN">库环境。</p> 
  <p> <b></p>
  <p ALIGN="JUSTIFY">代码</b></font><b>2<font LANG="ZH-CN">:初始化</font>OLE/COM<font
  LANG="ZH-CN">库环境</font></p>
  <p ALIGN="JUSTIFY">BOOL CADOApp<font LANG="ZH-CN">::</font>InitInstance()</p> 
  <p ALIGN="JUSTIFY">{</p> 
  <p ALIGN="JUSTIFY">if(!AfxOleInit())</p> 
  <p> <font LANG="ZH-CN"></p>
  <p ALIGN="JUSTIFY">{</p>
  <p ALIGN="JUSTIFY"></font>AfxMessageBox(“OLE<font LANG="ZH-CN">初始化出错</font>!”);</p>
  <p ALIGN="JUSTIFY">return FALSE;</p>
  <p ALIGN="JUSTIFY">}<font LANG="ZH-CN"> </p>
  <dir>
    </font><p ALIGN="JUSTIFY">……</p>
  </dir>
  <p> <font LANG="ZH-CN"></p>
  <p ALIGN="JUSTIFY">}</font></b></p>
      <font LANG="ZH-CN">
  <p ALIGN="JUSTIFY">函数</font>AfxOleInit<font LANG="ZH-CN">在每次应用程序启动时初始化</font>OLE/COM<font
  LANG="ZH-CN">库环境。</p>
  <p ALIGN="JUSTIFY">同</font>DAO<font LANG="ZH-CN">和</font>CDatabase<font LANG="ZH-CN">一样,</font>ADO<font
  LANG="ZH-CN">由几个接口组成:</font><b></p>
  <p ALIGN="JUSTIFY">_ConnectionPtr,_CommandPtr<font LANG="ZH-CN">和</font>_RecordsetPtr.</b><font
  LANG="ZH-CN"></p>
  <p ALIGN="JUSTIFY">不同于</font>DAO<font LANG="ZH-CN">和</font>Cdatabase<font
  LANG="ZH-CN">的是,</font>ADO<font LANG="ZH-CN">基于</font>COM<font LANG="ZH-CN">的接口,因此,假如你没有接触过</font>COM<font
  LANG="ZH-CN">,你应该在使用</font>ADO<font LANG="ZH-CN">前先找有关书籍了解一下</font>COM<font
  LANG="ZH-CN">。</font><b></p>
  <p ALIGN="JUSTIFY">3<font LANG="ZH-CN">、</font>ADO<font LANG="ZH-CN">接口简介</font></b></p>
  <p ALIGN="JUSTIFY">ADO<font LANG="ZH-CN">库包含三个基本接口</font>:_ConnectionPtr<font
  LANG="ZH-CN">接口、</font>_CommandPtr<font LANG="ZH-CN">接口和</font>_RecordsetPtr<font
  LANG="ZH-CN">接口。</p>
  <p ALIGN="JUSTIFY"></font>_ConnectionPtr<font LANG="ZH-CN">接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的</font>SQL<font
  LANG="ZH-CN">语句,如一个存储过程。使用</font>_ConnectionPtr<font
  LANG="ZH-CN">接口返回一个记录集不是一个好的使用方法。通常同</font>CDatabase<font
  LANG="ZH-CN">一样,使用它创建一个数据连接,然后使用其它对象执行数据输入输出操作。</p>
  <p ALIGN="JUSTIFY"></font>_CommandPtr<font LANG="ZH-CN">接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和</font>SQL<font
  LANG="ZH-CN">语句。在使用</font>_CommandPtr<font LANG="ZH-CN">接口时,你可以利用全局</font>_ConnectionPtr<font
  LANG="ZH-CN">接口,也可以在</font>_CommandPtr<font LANG="ZH-CN">接口里直接使用连接串。如果你只执行一次或几次数据访问操作,后者是比较好的选择。但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局</font>_ConnectionPtr<font
  LANG="ZH-CN">接口创建一个数据连接,然后使用</font>_CommandPtr<font
  LANG="ZH-CN">接口执行存储过程和</font>SQL<font LANG="ZH-CN">语句。</p>
  <p ALIGN="JUSTIFY"></font>_RecordsetPtr<font LANG="ZH-CN">是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同</font>_CommandPtr<font
  LANG="ZH-CN">接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给</font>_RecordsetPtr<font
  LANG="ZH-CN">的</font>connection<font LANG="ZH-CN">成员变量,让它自己创建数据连接。如果你要使用多个记录集,最好的方法是同</font>Command<font
  LANG="ZH-CN">对象一样使用已经创建了数据连接的全局</font>_ConnectionPtr<font
  LANG="ZH-CN">接口,然后使用</font>_RecordsetPtr<font LANG="ZH-CN">执行存储过程和</font>SQL<font
  LANG="ZH-CN">语句。</p>
  <p> <b></p>
  <p ALIGN="JUSTIFY"></b></font><b>4<font LANG="ZH-CN">、使用</font>_ConnectionPtr<font
  LANG="ZH-CN">接口</font></b></p>
  <p ALIGN="JUSTIFY">_ConnectionPtr<font LANG="ZH-CN">是一个连接接口,它类似于</font>CDatabase<font
  LANG="ZH-CN">和</font>CDaoDatabase<font LANG="ZH-CN">。它们的工作原理相似。首先创建一个</font>_ConnectionPtr<font
  LANG="ZH-CN">接口实例,接着指向并打开一个</font>ODBC<font LANG="ZH-CN">数据源或</font>OLE  
  DB<font LANG="ZH-CN">数据提供者</font>(Provider)<font LANG="ZH-CN">。以下代码和</font>CDaoDatabase<font 
  LANG="ZH-CN">分别创建一个基于</font>DSN<font LANG="ZH-CN">和非</font>DSN<font 
  LANG="ZH-CN">的数据连接。</p> 
  <p> <b></p>
  <p ALIGN="JUSTIFY">代码</b></font><b>3:<font LANG="ZH-CN">使用</font>CDaoDatabase<font
  LANG="ZH-CN">(基于</font>DSN<font LANG="ZH-CN">)</font></p>
  <p ALIGN="JUSTIFY">CDaoDatabase MyDb = new CDaoDatabase();</p> 
  <p ALIGN="JUSTIFY">MyDb.Open(NULL,FALSE,FALSE,&quot;ODBC;DSN=samp;UID=admin;PWD=admin&quot;);</p> 
  <p> <font LANG="ZH-CN"></p>
  <p ALIGN="JUSTIFY"> </p>
  <p ALIGN="JUSTIFY">代码</font>4:<font LANG="ZH-CN">使用</font>CDaoDatabase<font
  LANG="ZH-CN">(基于非</font>DSN<font LANG="ZH-CN">)</font></p>
  <p ALIGN="JUSTIFY">CDaoDatabase MyDb = new CDaoDatabase();</p> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -