一个功能强大用ADO访问数据库的类

内网环境下的高德地图离线化实战:从瓦片下载到交互功能集成 本文详细介绍了在内网环境中部署离线高德地图的完整实战方案。针对军工、能源、金融等对网络隔离与数据安全有严格要求的场景,文章核心解决了离线地图的两大基石:地图瓦片数据的高效下载与本地化,以及高德地图JS API的获取与插件集成。通过具体代码示例,进一步讲解了如何实现地图初始化、海量点标注与聚合、自定义图标及框选查询等核心交互功能,并分享了内网部署的路径配置、性能优化及法律合规等关键注意事项,为开发者在封闭网络环境下构建稳定、可控的地图应用提供了清晰指南。 阅读详情

 

头文件定义

/*   说明:  这是一个 Ado 类,可以实现用ADO对数据库操作     */
/*   1. 连接数据库                                        */
/*   2. 查询数据库的一个或关联表                          */
/*   3. 执行SQL 语句插入 修改 删除 操作                   */
/*   4. 关闭数据库                                        */

#include "stdafx.h"
#include "AdoEx.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

CAdoEx::CAdoEx()
{
   m_bOpen = FALSE ;
   
  file://连接的实例
   m_pConnection.CreateInstance(_uuidof(Connection)) ;
}

CAdoEx::~CAdoEx()
{

  if(retRecordsetPtr !=NULL)
   retRecordsetPtr->Close() ;
  retRecordsetPtr = NULL ;

 CloseAdo() ;

  m_bOpen = FALSE ;
}
file://打开 Ado 数据库
BOOL CAdoEx::OpenAdo(LPCTSTR lpDSN ,LPCTSTR lpUID ,LPCTSTR lpPWD )
{
 BOOL bRet = FALSE ;
   
 if(m_bOpen) return TRUE ;

 try
 {
    file://Connect Database
       hResult = m_pConnection->Open(lpDSN,lpUID,lpPWD,0)  ;

       if (SUCCEEDED(hResult))
    {
         TRACE0("Open ADO Database  Succeeded !/n") ;
         m_bOpen = TRUE ;
      bRet    = TRUE ;
    }
    else
    {
      m_bOpen = FALSE ;
         bRet    = FALSE ;
    }
 } file://end of try
 catch(_com_error e )
 {
  memset(lpBuff,0x00,500) ;
  sprintf(lpBuff,"打开数据库时发生异常 /n:%s",e.ErrorMessage());
  AfxMessageBox(lpBuff) ;
 }

 return bRet ;
}

/*     ADO 通用查询函数                      */ 
/*     调用参数: 正确的SQL 查询语句.         */
/*     可以对一个表查询,也可以对多个表查询   */
/*     返回一个纪录集                        */
/*     如果成功返回一个非空的纪录集          */
/*     如果失败则返回一个NULL的纪录集        */
_RecordsetPtr CAdoEx::Query(LPCTSTR lpQuery)
{
  retRecordsetPtr = NULL ;
  _variant_t vRecsAffected ;

  if(!m_bOpen) return NULL ;

  try
  {
    retRecordsetPtr = m_pConnection->Execute(lpQuery,
                                     &vRecsAffected,
                              adOptionUnspecified) ;
  }
  catch(_com_error e)
  {
  memset(lpBuff,0x00,500) ;
  sprintf(lpBuff,"查询数据库表时发生异常 /n:%s",e.ErrorMessage());
  AfxMessageBox(lpBuff) ;
  }

   return retRecordsetPtr ;
}

/*     ADO 通用查询函数                      */ 
/*     调用参数: 正确的SQL 查询语句.         */
/*     可以对一个表插入 修改 删除 操作       */
/*     如果成功返回真                        */
/*     如果失败返回假                        */
BOOL CAdoEx::Execute(LPCTSTR lpExcute)
{
  BOOL  bRet  = FALSE ;
  _variant_t vRecsAffected ;

  if(!m_bOpen) return NULL ;

  try
  {
     m_pConnection->Execute(lpExcute,
                      &vRecsAffected,
                   adOptionUnspecified) ;
    bRet = TRUE ;
  }
  catch(_com_error e)
  {
     bRet = FALSE ;
  memset(lpBuff,0x00,500) ;
  sprintf(lpBuff,"更改数据库表时发生异常 /n:%s",e.ErrorMessage());
  AfxMessageBox(lpBuff) ;
  }

   return bRet  ;
}

BOOL CAdoEx::CloseAdo()
{
    if (m_bOpen)
 {
  m_pConnection->Close() ;
  TRACE0("Close ADO Connection !/n") ;
 }

 return TRUE ;
}

file://------------------------------------------------------------------------------------------

file://AdoEx 实现

/*   说明:  这是一个 Ado 类,可以实现用ADO对数据库操作     */
/*   1. 连接数据库                                        */
/*   2. 查询数据库的一个或关联表                          */
/*   3. 执行SQL 语句插入 修改 删除 操作                   */
/*   4. 关闭数据库                                        */

#include "stdafx.h"
#include "AdoEx.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CAdoEx::CAdoEx()
{
   m_bOpen = FALSE ;
  
   file://初始化连接的实例
   m_pConnection.CreateInstance(_uuidof(Connection)) ;
}

CAdoEx::~CAdoEx()
{

  if(retRecordsetPtr !=NULL)
   retRecordsetPtr->Close() ;
  retRecordsetPtr = NULL ;

  CloseAdo() ;

  m_bOpen = FALSE ;
}
file://打开 Ado 数据库
BOOL CAdoEx::OpenAdo(LPCTSTR lpDSN ,LPCTSTR lpUID ,LPCTSTR lpPWD )
{
 BOOL bRet = FALSE ;
   
 if(m_bOpen) return TRUE ;

 try
 {
    file://Connect Database
       hResult = m_pConnection->Open(lpDSN,lpUID,lpPWD,0)  ;

       if (SUCCEEDED(hResult))
    {
         TRACE0("Open ADO Database  Succeeded !/n") ;
         m_bOpen = TRUE ;
      bRet    = TRUE ;
    }
    else
    {
      m_bOpen = FALSE ;
         bRet    = FALSE ;
    }
 } file://end of try
 catch(_com_error e )
 {
  memset(lpBuff,0x00,500) ;
  sprintf(lpBuff,"打开数据库时发生异常 /n:%s",e.ErrorMessage());
  AfxMessageBox(lpBuff) ;
 }

 return bRet ;
}

/*     ADO 通用查询函数                      */ 
/*     调用参数: 正确的SQL 查询语句.         */
/*     可以对一个表查询,也可以对多个表查询   */
/*     返回一个纪录集                        */
/*     如果成功返回一个非空的纪录集          */
/*     如果失败则返回一个NULL的纪录集        */
_RecordsetPtr CAdoEx::Query(LPCTSTR lpQuery)
{
  retRecordsetPtr = NULL ;
  _variant_t vRecsAffected ;

  if(!m_bOpen) return NULL ;

  try
  {
    retRecordsetPtr = m_pConnection->Execute(lpQuery,
                                     &vRecsAffected,
                              adOptionUnspecified) ;
  }
  catch(_com_error e)
  {
  memset(lpBuff,0x00,500) ;
  sprintf(lpBuff,"查询数据库表时发生异常 /n:%s",e.ErrorMessage());
  AfxMessageBox(lpBuff) ;
  }

   return retRecordsetPtr ;
}

/*     ADO 通用查询函数                      */ 
/*     调用参数: 正确的SQL 查询语句.         */
/*     可以对一个表插入 修改 删除 操作       */
/*     如果成功返回真                        */
/*     如果失败返回假                        */
BOOL CAdoEx::Execute(LPCTSTR lpExcute)
{
  BOOL  bRet  = FALSE ;
  _variant_t vRecsAffected ;

  if(!m_bOpen) return NULL ;

  try
  {
     m_pConnection->Execute(lpExcute,
                      &vRecsAffected,
                   adOptionUnspecified) ;
    bRet = TRUE ;
  }
  catch(_com_error e)
  {
     bRet = FALSE ;
  memset(lpBuff,0x00,500) ;
  sprintf(lpBuff,"更改数据库表时发生异常 /n:%s",e.ErrorMessage());
  AfxMessageBox(lpBuff) ;
  }

   return bRet  ;
}

BOOL CAdoEx::CloseAdo()
{
    if (m_bOpen)
 {
  m_pConnection->Close() ;
  TRACE0("Close ADO Connection !/n") ;
 }

 return TRUE ;
}

 

Windows 本地 PostgreSQL 忘记 postgres 密码后,如何重置密码并给 root 用户最高权限 <think>我们只需要根据内容生成摘要,不超过150字。摘要应该简明扼要概括主要问题和解决步骤。注意是中文摘要。</think>在Windows本地开发中,因root数据库账号无CREATEDB权限且忘记postgres超级管理员密码,通过临时修改pg_hba.conf为trust认证重置密码,并重启PostgreSQL服务进行登录,最后授予root用户SUPERUSER等权限,完成数据库创建。 阅读详情

相关推荐

51单片机最强模块化封装(3)

本篇文章将带大家继续封装我们的代码。这里我们会封装数码管的操作函数。我们又封装了一个模块啦,不知道现在大家有没有感受到模块化的强大呢。B站。

m0_49476241的博客 4022

ADO 超强大数据库操作(附例程)

转来的 Carlos Antollini 编写的功能强大、简单易用的ADO操作数据库。从繁重的SQL代码中解放,一个函数搞定读取写入。 在工程中添加ado2.h、ado2.cpp两个文件 如果项目之前在XP在编译,在换到WINDOWS7编译时可能会出错,这是因为msado15.dll和MSJRO.DLL版本的问题。 XP SP3下msado15.dll:2.81.3014.0 MSJRO.DLL:2.81.3012.0 此文件在:C:\Program Files\Common Files\System\ado目录下。 在需要使用数据库的文件中包含 ado2.h文件

VC++6.0 ADO数据库访问模板详解

VC++6.0,即Visual C++ 6.0,是由微软公司开发的一个集成开发环境(IDE),专门用于C++语言的软件开发。它提供了一套全面的工具集,包括代码编辑器、编译器、调试器和项目管理工具等,使得开发人员可以高效地编写、编译、调试和发布应用程序。OLE DB(Object Linking and Embedding for Databases)是一种由微软公司提供的数据库应用程序接口(API),它能够从多种数据源中获取数据。

weixin_28949937的博客 743

VC(ADO)

.H文件// ADO.h: interface for the CADO class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_ADO_H__5A466E67_5E04_445D_9CB0_C64650B9AC68__INCLUDED_)#define A

龙宇网的专栏 4212

一个封装了的ADO,功能非常强大,并做了一个DEMO演示如何操作ACCESS数据库

呵呵,说实在的,这个俺是从外国论坛上下载的,自己研究了下如何使用并做了一个DEMO,演示如何操作ACCESS数据库。希望给那些没有接触数据库编程的初学者一点启发吧。有任何问题请及时与我联系^_^。程序下载地址:/Files/taojingtao/ADODemo.rar 转载于:https://www.cnblogs.com/taojingtao/archive/2006/04/0...

weixin_30408309的博客 136

比较强大的ado。收藏了,谢谢作者分享

#pragma once #include "math.h" #import "MSADO15.DLL" rename_namespace("ADOWE") rename("EOF","EndOfFile") using namespace ADOWE; class CDBAdo { public: _CommandPtr m_ptrCommand; //命令对象 _Recordse

rongrong0538的专栏 973

一个功能强大的用ADO 访问数据库

        ADO 访问数据库是基于COM ,访问速度快、使用方便等特点。我在实际的工作当中发现可以把一些常用的方法构造成一个,不妨叫她为 CAdoEx 吧。下面分别是头文件、实现文件。要是有不妥之处请给我发邮件 luoshizhen@163.net*说明:--------------------------------------------*//*  注 stdafx.h 里要有下

luoshizhen的专栏 782

Visual C++ 数据库开发的特点

visual C++提供了多种多样的数据库访问技术——ODBC API、MFC ODBC、MFC DAO(面向对象)、MFC OLEDB、和ADO等,这些技术各有自己的特点。为了解决ODBC开发的数据库应用程序访问数据库速度慢的问题,visual C++提供了新的访问技术——OLEDB和ADO。OLEDB和ADO都是基于COM接口技术,可以直接对数据库的驱动程序进行访问,大大提高了访问的速度。 ...

weixin_33755557的博客 106

四种数据库访问技术

l ODBC(Open Database Connectivity) 开放式数据库连接,是一种用来在数据库管理系统(DBMS)中存取数据的标准应用程序接口。有ODBC API和MFC ODBC两种开发技术。 l DAO(Data Access Object ) 即数据访问对象集,是Microsoft提供的基于一个数据库对象集合的访问技术。和ODBC一样,他们都是Windows API的一部分

Java教程 2008

ADO

微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。ADO被设计来继承微软早期的数据访问对象层,

teresa502的专栏 895

连接数据库方法---DAO,RDO,OLE,ADO

2012-12-14 09:40 (分:计算机程序)DAO (Data Access Objects)提供了一种通过程序代码创建和操纵数据库的机制。最大特点是对MICROSOFT JET(Jet是微软开发的一种数据库引擎,微软还以它为基础开发出了若干种产品,其中包括著名的Microsoft Access数据库)的操作很方便,而且是操作JET数据库时性能最好的技术接口之一。并且它并不只能用于访问

centos的博客 679

Microsoft的ODBC 开放式数据库连接(ODBC)与ADO对比

开放式数据库连接(ODBC)  是用于访问数据在异环境中的关系和非 Microsoft 的战略界面-关系数据库管理系统。基于的 SQL 访问组的 ODBC 规范提供了一种开放的、 非特定于供应商的方法访问存储在各种专用的个人计算机、 小型计算机,和主机数据库中的数据的呼叫级别接口。 ODBC 缓解独立软件供应商和企业开发人员需要了解多个应用程序的编程接口。ODBC 现在提供了通用数据访问

拥抱变化 2243

ADO访问数据库

摘 要:本文介绍了ADO访问数据库的基本过程,给出了一种在Visual C++下封装ADO访问数据库的方法。   1 引言   在过去几年中,微软公司相继推出了几种数据访问技术,先是DAO(Data Access Objects),然后是RDO(Remote Data Objects),现在是ADO(ActiceX Data Objects)。ADO是Microsoft数据库应用程序开发的新

dongdan_002的专栏 816

asp ado连接oracle数据库,ASP ADO数据库访问

现在很多动态网页是基于数据库的,网页的内容依靠数据库生成。信息的查询和输入也需要数据库支持,可以说网站的操作基本离不开数据库的支持。在ASP网站中,所有访问数据库的操作都可以由ADO(ActiveXData Objects)来实现。如果不能掌握其使用方法,ASP程序员就无法编写出功能强大的ASP应用程序。本章将介绍ADO访问数据库的方法。13.1ADO概述ADO提供了访问各种数据库的连接机制,是...

weixin_31269713的博客 677

Java开源在线考试系统怎么选?从技术选型到落地部署的完整指南

Java开源在线考试系统怎么选?本文从技术选型、核心功能、部署运维、二次开发等维度,梳理了Java开源在线考试系统的选型要点。

麦塔在线考试培训系统 340

数据库迁移不翻车:golang-migrate 实战,143 个 DDL 有序执行(第97篇-E83)

上一篇 讲了 Agent 怎么测试。但还有一个更基础的问题:数据库 schema 怎么变? 手动跑 SQL 总有人忘了加列、忘了写 down、忘了更新 CI。版本号撞车。dirty 状态没人管。DeepFlux 的答案是:golang-migrate + embed.FS + CI 链守卫 + 哨兵探针。这篇拆解 143 个迁移(000001~000143)是怎么做到不翻车的。

leeyisoft的专栏 190

cpp选手秋招学习笔记 day18

幂等是指一次或多次执行同一个操作,得到的业务结果是相同的,比如对于扣费,客户端因为网络问题重新发出请求,服务端不会进行多次处理,解决方法是可以客户端携带一个独特的唯一的id,然后服务端执行完之后存储这个id,之后新的请求到来比对id。主要是由cpu的内存管理逻辑维护,然后运行时动态的传递给CUDA的kernel,使用的时候传递这个block table,放置在GPU的显存。移动是指把资源的所有者权限转移,原有的变量有效但是状态不确定,赋值是拷贝复制对象,原对象不变。1.什么是幂等,如何保证。

m0_57222081的博客 265

商超智能运营如何落地?从系统架构到实战避坑的完整技术路径

3. **多端交互展示层**:需覆盖顾客使用的**小程序、APP及H5公众号**,以及员工使用的管理后台。答:在应用层引入**适配器模式**。在项目启动时,应强制要求供应商或自研团队产出**部署文档**(含环境变量清单)和**二次开发文档**(含核心流程时序图),确保后续维护不受限于个人。- **多租户插件**:MyBatis Plus的`TenantLineInnerInterceptor`可实现SQL层面的自动拼接`store_id`条件,防止开发者因SQL编写疏漏导致的数据越权。

weixin_56812938的博客 411

基于Python的爱奇艺视频数据可视化分析系统

长视频平台剧集、评分、热度与评论数据体量大、维度多,手工汇总难以快速把握型结构、口碑分布与主演导演影响力。系统采用 B/S 架构,后端入口为app.py,运行端口8060;数据库使用 MySQL(库名iqiyi),经 PyMySQL 访问。前台基于 Bootstrap 5、本地中的 ECharts 5 与 echarts-wordcloud,配合主题。业务表包括usersdramascommentsfavorites。数据可通过导入,或经/ 相关脚本补充样本。分析层在。

qq_35928134的博客 233

windows版本oracle19c安装教程-新手教程

windows版本oracle19c安装教程-新手教程、oracle19c新手教程 、oracle19c新手安装教程、oracle19c安装教程 windows版本

qq_27076243的博客 178

versal-prime-gen2-psg_中英文对照版_2025年.pdf

versal-prime-gen2-psg_中英文对照版_2025年

上一篇: 一个功能增强型用ADO访问数据库的类
下一篇: 一个用功能强大的ODBC API 函数访问数据库类
luoshizhen
博客等级 码龄25年 1粉丝 4原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值