VC用Ado接口连接和使用数据库及注意事项

一、阅读本文所需注意的其它事项
  1、进行方法调用时,所传递的参数的类型的转换(可能存在比本文更简便的处理方法但我未发现)
  2、每个源文件的每行注释说明了其文件名
  3、请关注相关头文件包含关系
  4、请关注文中所有中文注释
  5、更多的内容请参阅 "VC安装目录\Include\adoint.h"文件,adoint即ActiveX Data Object
  InterFace(菜 鸟请勿惊慌,这仅仅只是个名称)

二、下面的源文件与您的数据库应用程序不直接相关,但其目标代码(生成的.obj文件)是您必需的,请参考
  file://Ado.cpp文件///////////////////////////////////////////
  #include
  #include
  #include
  该文件使用方法:新建一个空的MFC工程,将此文件添加到该工程中,编译生成Ado.obj文件,再将此.obj文件添加到您的数据库应用程序.该源文件在您的数据库应用程序中是不需要的。

三、下面是与您的数据库应用程序源文件相关代码(非所有代码)


代码如下:

  file://1、ado.h文件////////////////////////////////////////
  #ifndef __ADO__H__LZG
  #define __ADO__H__LZG
  #include
  #include
  #include
  #endif
  file://2、stdafx.h文件////////////////////////////////////////
  #if _MSC_VER > 1000
  #pragma once
  #endif // _MSC_VER > 1000
  #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
  #include // MFC core and standard components
  #include // MFC extensions
  #include // MFC Automation classes
  #include // MFC support for Internet Explorer 4 Common Controls
  #include "ado.h" file://请注意这里
  #ifndef _AFX_NO_AFXCMN_SUPPORT
  #include
  file://3、数据库应用程序.h文件///////////////////////////////////////////////
  file://以下为用到的若干相关数据库引用变量(声明在其头文件中)
  ADOField* pfd;
  ADOFields* pfds;
  CString m_dbfile;
  ADORecordset* prs;
  ADOConnection* pdb;
  file://4、数据库应用程序.cpp文件/////////////////////////////////////////////
  #include "stdafx.h"
  #include "数据库应用程序.h"
  file://这里添加其它相关头文件
  file://以下为该.cpp文件中若干自定义或非自定义的方法,与数据库连接相关
  file://其中每一条语句都有含义,请关注其中的注释
  BOOL CBKDlg::InitDataEnv()
  {
   file://下面定义了一个简单的连接字符串,当然还有更复杂的
   CString s=_T("Provider=Microsoft.Jet.OLEDB.3.51;Data Source=d:\\data\\资料借阅管理.mdb");
   ::CoInitialize (NULL);//初始化COM环境
   CoCreateInstance(CLSID_CADOConnection,
   NULL,
   CLSCTX_INPROC_SERVER,
   IID_IADOConnection15,
   (LPVOID*)&pdb
   );//初始化一个ADO连接
  CoCreateInstance(CLSID_CADORecordset,
   NULL,
   CLSCTX_INPROC_SERVER,
   IID_IADORecordset,
   (LPVOID*)&prs
   );//初始化一个ADO数据集
  CoCreateInstance(CLSID_CADOField,
   NULL,
   CLSCTX_INPROC_SERVER,
   IID_IADOFields,
   (LPVOID*)&pfds
   );//初始化一个ADO数据域集合(域即是Fox中的字段,下同)
  CoCreateInstance (CLSID_CADOField,
   NULL,
   CLSCTX_INPROC_SERVER,
   IID_IADOField,
   (LPVOID*)&pfd
   );//初始化一个ADO数据域集合中的一个域
  file://打开上述ADO连接
  pdb->Open((unsigned short*)(LPCSTR)s,(unsigned short*)"",(unsigned short*)"",0);
   file://打开上述ADO数据集,但它的连接参数是使用的上述字符串
  file://应当存在以上面的连接替换该字符串的方法,但我没找到
  prs->Open(COleVariant(_T("资料信息")),COleVariant(s),adOpenKeyset,adLockOptimistic,adCmdTable);
  file://数据集的域不存在打开与否,只需直接到已打开的数据集中引用即可,详情请见
  
  file://CBKDlg::OnBeforeColUpdateDatagrid方法
  m_dg.ClearFields ();//MS DATAGRID 控件(Activex)的数据清空
  m_dg.SetRefDataSource(prs); file://上述控件与数据集的绑定
  return TRUE;
  }
  BOOL CBKDlg::DestroyWindow()
   {
    // TODO: Add your specialized code here and/or call the base class
    m_dg.SetRefDataSource(NULL);
    long state;
    file://下面的处理可能存在逻辑上的错误,不过关闭数据集与数据连接的语法是正确的
    if(!FAILED(prs->get_State(&state)))
     if(state!=adStateClosed)
      {
       prs->Close();
       prs=NULL;
      }
     if(!FAILED(pdb->get_State(&state)))
      if(state!=adStateClosed)
      {
       pdb->Close();
       pdb=NULL;
      }
     ::CoUninitialize ();//释放COM环境
     return CDialog::DestroyWindow();
    }
    void CBKDlg::OnBeforeColUpdateDatagrid(short ColIndex, VARIANT FAR* OldValue, short FAR* Cancel)
   {
    file://该事件(方法)在MS DATAGRID 控件(ActiveX)的单元数据更新前发生
    file://该事件您可能用不着,但其中的代码您可能用得着
    COleVariant v((LPCSTR)m_dg.GetText ());//获取上述控件当前单元格的数据
    CString fieldname=m_dg.GetColumns().GetItem(COleVariant(ColIndex)).GetCaption();
    DataTypeEnum fieldtype;//描述ADO数据类型的枚举类型
    prs->get_Fields(&pfds);//从数据集中获得数据域集合
    pfds->get_Item (COleVariant(fieldname),&pfd);//从数据域集合中获得特定名称的域
    pfd->get_Type (&fieldtype);//从上述域中获取其数据类型,如整型或字符串型
    switch (fieldtype){
     case adSmallInt:
     case adInteger:
          break;
     case adDate:
          break;
     case adCurrency://Data type describing for Money ,Understand?
          break;
     case adVarChar://对应于VB中的String类型和VC中的CString类型
          break;
     default:
          break;
     }
    }//该方法来源于MS DataGrid ActiveX控件的事件,无具体的处理代码,望海涵

(0)

相关推荐

  • VC中使用ADO开发数据库应用程序简明教程

    本文实例讲述了VC中使用ADO开发数据库应用程序的方法.分享给大家供大家参考,具体如下: 一.ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口.ADO 使您能够编写应用程序以通过 OLE.DB 提供者访问和操作数据库服务器中的数据.ADO 最主要的优点是易于使用.速度快.内存支出少和磁盘遗迹小.ADO 在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量.高性能的接口.之所以

  • c语言连接mysql数据库的实现方法

    我这里也有一份网上找到的:/201205/other/C_link_mySql51.rar C连接MySql5.1所需文件.rar 附带一个不错的例子: #include <string.h> #include <stdlib.h> #include <stdio.h> #include <winsock2.h> #include <mysql/mysql.h>/*注意要包含这个头文件*/ #pragma comment(lib,"li

  • VC基于ADO技术访问数据库的方法

    本文实例讲述了VC基于ADO技术访问数据库的方法.分享给大家供大家参考.具体如下: 一.在StdAfx.h文件中添加 复制代码 代码如下: #import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","rsEOF") 导入ADO引擎. 二.数据库应用层操作 void CADOExample1Dlg::OnBtnQuery() {

  • 用C语言操作MySQL数据库的通用方法

    在我们的web应用中,虽然PHP.JSP等脚本均提供了MySQL的接口,但是显然直接使用C语言具有更好的安全性和性能,在这篇文章中能够有所体现. 先看结构体: 以下代码块是用来连接数据库的通讯过程,要连接MYSQL,必须建立MYSQL实例,通过mysql_init初始化方能开始进行连接. typedef struct st_mysql { NET net; /* Communication parameters */ gptr connector_fd; /* ConnectorFd for S

  • C语言连接并操作Sedna XML数据库的方法

    本文实例讲述了C语言连接并操作Sedna XML数据库的方法.分享给大家供大家参考.具体如下: #include "libsedna.h" #include "stdio.h" int handle_error(SednaConnection* conn, const char* op, int close_connection) { printf("%s failed: \n%s\n", op, SEgetLastErrorMsg(conn))

  • c++连接mysql数据库的两种方法(ADO连接和mysql api连接)

    第一种方法可以实现我当前的需求,通过连接不同的字符串来连接不同的数据库.暂时只连接了mysql,sqlserver,oracle,access.对于access,因为它创建表的SQL语句不太兼容标准SQL语句,需要做一些处理,这里暂时不说.第二种方法只能针对于mysql数据库的连接,不过用这种方法不用安装MyODBC服务器程序. 不管用哪种方法,首先需要安装Mysql数据库,安装方法请看"mysql安装及一些注意点".最好安装一个Navicat for mysql,方便操作mysql数

  • VC实现ODBC数据库操作实例解析

    本文以VC实例介绍了实现数据库操作的各种方法,包括打开数据库.关联记录集.读取Excel数据.执行SQL查询.创建存取字符串等,相信对于初学VC的朋友有一定的参考价值,主要功能代码如下: //打开数据库 CDatabase database; database.OpenEx( _T( "DSN=zhuxue" ),CDatabase::noOdbcDialog);//zhuxue为数据源名称 //关联记录集 CRecordset recset(&database); //查询记

  • VC用Ado接口连接和使用数据库及注意事项

    一.阅读本文所需注意的其它事项 1.进行方法调用时,所传递的参数的类型的转换(可能存在比本文更简便的处理方法但我未发现) 2.每个源文件的每行注释说明了其文件名 3.请关注相关头文件包含关系 4.请关注文中所有中文注释 5.更多的内容请参阅 "VC安装目录\Include\adoint.h"文件,adoint即ActiveX Data Object InterFace(菜 鸟请勿惊慌,这仅仅只是个名称) 二.下面的源文件与您的数据库应用程序不直接相关,但其目标代码(生成的.obj文件)

  • C++利用MySQL API连接和操作数据库实例详解

    1.C++连接和操作MySQL的方式 系列文章: MySQL 设计和命令行模式下建立详解 C++利用MySQL API连接和操作数据库实例详解 在Windows平台,我们可以使用ADO.ODBC或者MySQL API进行连接和操作.ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的一个用于存取数据源的COM组件.它提供了程序语言和统一数据访问方式OLE DB的一个中间层,也就是Microsoft提出的应用程序接口(API)用以实现访问关系或非关

  • Windows和Linux系统下perl连接SQL Server数据库的方法

    本文将提供一些perl连接Microsoft SQL Server数据库的实例.perl脚本运行在Windows和Linux平台. Windows平台 如果在Windows平台下运行perl脚本,建议使用依赖DBI的两个模块包,提供标准的数据库接口模块. DBD::ODBC DBD::ADO 使用DBD::ODBC 如果选用DBD::ODBC,下面的实例代码将展示如何连接到SQL Server数据库: 复制代码 代码如下: use DBI;   # DBD::ODBC   my $dsn = '

  • 谈谈PHP连接Access数据库的注意事项

    首先需要注意: 安装access 数据库的时候 需要安装与本机系统相互匹配的office版本,win7 64位的系统 ,那么Office也要是64位的 最好装 office2010... 因为我就是经历了从 2003 -2007 -2010的痛苦,特别是在装2010的时候,因为装载过2003版本的office ,导致需要彻底清除干净2003版本的office. 所有劝各位能装2010 的就尽量装2010的吧,不过你要是不装的话,也随便你啦o(* ̄▽ ̄*)o  . 第一步 装 office 201

  • PHP连接操作access数据库实例

    因为之前做的PingSwitch要做一个WEB展示的前端,因为一开始用了Delphi和access的结构,而Delphi与MySQL的连接又相对麻烦,最后只能选择用PHP+Access的组合,比较奇怪,但是也合理····· 在PHP中连接access数据库的话我们必须ADO来连接,这跟ASP中连接数据库非常的类似.下边给出了一段DEMO供大家参考. <?PHP /* 创建ADO连接 */ $conn = @new COM("ADODB.Connection") or die (&

  • C#连接操作 MySQL 数据库实例(使用官方驱动)

    MySQL 以其免费和足够的性能受到很大的青睐,当然对于国内小公司,甚至是大公司如果对版权看得薄,敢冒险的话,随便装个 SqlServer.DB2.Oracle 都行.对于 SqlServer 数据库,因其与 MS 是一家,自然在 .net 类库中有内建支持,假如 MySQL 就得找第三方的驱动了 -- .net 中多讲 Provider.在这里我也是作为一个预研专题,记录下 C# 连接 MySQL 的两种方法,分别使用 MySQL 官方的和 SourceForge 上一个开源的 MySQL 驱

  • vs code连接sql server数据库步骤及遇到的问题小结

    最近因为要在vs code上连接到sql server数据库,第一次尝试,之前用 java的时候使用jdbc连接过数据库,感觉用vs code连接数据库步骤要简单一些,网上写的博客也不是特别多,就顺便把我的步骤记录下来,仅供参考,这里也参考了官网给出的连接方法,链接放在文章下方了. 第一步,安装mssql扩展 先在vs code的扩展里面找到SQL Server(mssql)扩展,并下载安装即可. 下载好之后会出现SQL SERVER的版块.(请忽略已经连接好的数据库) 第二步,连接到 SQL

  • VS2019连接mysql8.0数据库的教程图文详解

    1.首先准备好VS2019以及mysql数据库,两者都可以去官网下载,我们直接描述连接过程. 2.连接: 第一步:打开mysql的安装目录,我本地的安装目录如下:(注意是否有include和lib文件夹) 第二步:打开VS2019,新建一个空工程. 第三步:右击工程名,打开属性页: 第四步:打开VC++目录,在包含目录中,将mysql安装文件中的include文件的路径添加到这里: 第五步:还是在属性页上,打开C/C++,选择常规,和上一步一样,在附加包含目录中将mysql文件中的include

  • Python接口自动化浅析pymysql数据库操作流程

    在上一篇Python接口自动化测试系列文章:Python接口自动化浅析yaml配置文件原理及用法,主要介绍主要介绍yaml语法.yaml存储数据,封装类读写yaml配置文件. 在自动化过程中,我们需要查询数据库,校验结果是否正确,比如充值完成之后,需要查询数据库,查看充值是否成功. 以下主要介绍,pymysql安装.操作流程.语法基础及封装操作数据库类. 一.pymysql介绍及安装 01 pymysql介绍 MySQL应该说是如今使用最为普遍的数据库了,没有之一,而Python作为最为流行的语

随机推荐