08 DAO

Ubuntu终端AI编程助手配置:Claude Code接入DeepSeek模型全攻略 在软件开发领域,AI编程助手正成为提升开发效率的重要工具。其核心原理是通过大语言模型理解自然语言指令,生成、解释或调试代码。这类工具的技术价值在于将AI能力无缝集成到开发工作流中,减少上下文切换,实现更流畅的人机协作。常见的应用场景包括代码生成、错误调试、代码重构和技术问答等。本文聚焦于在Ubuntu系统中,将流行的终端AI助手Claude Code的后端模型从原版Claude替换为DeepSeek。通过配置环境变量实现API端点和模型的映射,这一过程涉及Node.js环境管理、npm包安装和关键环境变量设 阅读详情
DAO

10.8.1 什么是DAO

DAO(Database Access Object)使用Microsoft Jet数据库引擎来访问数据库。Microsoft Jet为象Access和Visual Basic这样的产品提供了数据引擎。

与ODBC一样,DAO提供了一组API供编程使用。MFC也提供了一组DAO类,封装了底层的API,从而大大简化了程序的开发。利用MFC的DAO类,用户可以编写独立于DBMS的应用程序。

DAO是从Visual C++4.0版开始引入的。一般地讲,DAO类提供了比ODBC类更广泛的支持。一方面,只要有ODBC驱动程序,使用Microsoft Jet的DAO就可以访问ODBC数据源。另一方面,由于DAO是基于Microsoft Jet引擎的,因而在访问Access数据库(即*.MDB文件)时具有很好的性能。

10.8.2 DAO和ODBC的相似之处

DAO类与ODBC类相比具有很多相似之处,这主要有下面几点:

    • 二者都支持对各种ODBC数据源的访问。虽然二者使用的数据引擎不同,但都可以满足用户编写独立于DBMS的应用程序的要求。

    • DAO提供了与ODBC功能相似的MFC类。例如,DAO的CDaoDatabase类对应ODBC的CDatabase类,CDaoRecordset对应CRecordset,CDaoRecordView对应CRecordView,CDaoException对应CDBException。这些对应的类功能相似,它们的大部分成员函数都是相同的。

    • AppWizard和ClassWizard对使用DAO和ODBC对象的应用程序提供了类似的支持。

 

由于DAO和ODBC类的许多方面都比较相似,因此只要用户掌握了ODBC,就很容易学会使用DAO。实际上,用户可以很轻松地把数据库应用程序从ODBC移植到DAO。

Visual C++随盘提供了一个名为DaoEnrol的例子,该例实际上是Enroll的一个DAO版本。读者可以打开DaoEnrol工程看一看,它的源代码与Enroll的极为相似。读者可以按照建立Enroll的步骤来建立DaoEnrol,其中只有若干个地方有差别,这主要有以下几点:

选取的数据源不同。在用AppWizard创建DaoEnrol时,以及在用ClassWizard创建CDaoRecordset类的派生类时,在Database Options对话框中应该选择DAO而不是ODBC。而且DAO的数据源是通过选择一个.MDB文件来指定的,即点击“...”按钮后在文件对话框中选择要访问的.MDB文件。

记录集的缺省类型不同。ODBC记录集的缺省类型是快照(Snapshot),而DAO则是动态集(Dynaset)。

参数化的方式不同。DAO记录集的m_strFilter和m_strSort中的参数不是“?”号,而是一个有意义的参数名。例如,在下面的过滤器中有一个名为CourseIDParam的参数。
m_pSet->m_strFilter ="CourseID = CourseIDParam";
在DoFieldExchange函数中,有下面两行:
pFX->SetFieldType(CDaoFieldExchange::param);
DFX_Text(pFX, _T("CourseIDParam"), m_strCourseIDParam);
DFX
函数的第二个参数也是CourseIDParam。

处理异常的方式不同。例如,在删除记录时,对异常的处理如下所示:

try

{

m_pSet->Delete();

}

catch(CDaoException* e)

{

AfxMessageBox(e->

m_pErrorInfo->m_strDescription);

e->Delete();

}

除了上述差别外,AppWizard和ClassWizard也隐藏了一些细微的不同之处,例如,DAO记录集是使用是DFX数据交换机制(DAO record field exchange)而不是RFX,在DAO记录集的DoFieldExchange中使用的是DFX函数而不是RFX函数。

10.8.3 DAO的特色

DAO可以通过ODBC驱动程序访问ODBC数据源。但DAO是基于Microsoft Jet引擎的,通过该引擎,DAO可以直接访问Access、FoxPro、dBASE、Paradox、Excel和Lotus WK等数据库。CDaoDatabase类可以直接与这些数据库进行连接,而不必在ODBC管理器中注册DSN。例如,下面的代码用来打开一个FoxPro数据库:

CDaoDatabase daoDb;

daoDb.Open( “”,FALSE,FALSE,"FoxPro 2.5;DATABASE=c://zyf");

CDaoDatabase::Open函数用来连接某个数据库,该函数的声明为:

virtual void Open( LPCTSTR lpszName, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = _T("") );
throw( CDaoException, CMemoryException );

 

参数bExclusive如果为TRUE,则函数以独占方式打开数据库,否则就用共享方式。如果bReadOnly为TRUE,那么就以只读方式打开数据库。如果要打开一个Access数据库,则可以在lpszName参数中指定MDB文件名。如果要访问非Access数据库,则应使该参数为“”,并在lpszConnect中说明一个连接字符串。连接字符串的形式一般为 “数据库类型;DATABASE=路径(文件)”,例如 “dBASE III;DATABASE=c://MYDIR”

Open函数也可以打开一个ODBC数据源,但这需要相应的ODBC驱动程序,并需要在ODBC管理器中注册DSN。此时lpszConnect的形式为 “ODBC;DSN=MyDataSource”。显然,用DAO访问象FoxPro这样的数据库时,直接打开比把它当作ODBC数据源打开要省事。

支持DDL是DAO对数据库编程良好支持的一个重要体现。DDL(Data Definition Language)在SQL术语中叫做“数据定义语言”,它用来完成生成、修改和删除数据库结构的操作。ODBC类只支持DML(Data Manipulation Language,数据操作语言),不支持DDL,所以用ODBC类只能完成数据的操作,不能涉及数据库的结构。要执行DDL操作,只有通过ODBC API。而DAO类同时提供了对DML和DDL的支持,这意味着程序可以使用DAO类方便的创建数据库及修改数据库的结构。

与ODBC相比,DAO提供了一些新类来加强其功能,这些新类包括:

CDaoTableDef类提供了对表的结构的定义。调用CDaoTableDef::Open可以获得表的结构定义。调用CDaoTableDef::Create可以创建一张新表,调用CDaoTableDef:: CreateField可为表添加字段,调用CDaoTableDef::CreateIndex可以为表添加索引。调用CDaoTableDef::Append可以把新创建的表保存到数据库中。

CDaoQueryDef类代表一个查询定义(Query definition),该定义可以被存储到数据库中。

CDaoWorkspace提供了数据工作区(Workspace)。一个工作区可以包含几个数据库,工作区可以对所属的数据库进行全体或单独的事务处理,工作区也负责数据库的安全性。如果需要,程序可以打开多个工作区。

 

DAO的另一个重要特色在于它对Access数据库提供了强大的支持。由于DAO是基于Microsoft Jet引擎的,所以DAO肯定要在Access数据库上多作一些文章。例如,调用CDaoDatabase::Create可以直接建立一个MDB文件,代码如下所示:
m_db.Create(“C://MYDIR//MYDB.MDB”);

利用AppWizard和ClassWizard,用户可以方便地开发出性能优良的基于DAO的Access数据库应用程序。

10.8.4 ODBC还是DAO

由于DAO可以访问ODBC数据源,下面几条可以作为DAO替代ODBC的理由:

    • 在某些情况下可以获得更好的性能,特别是在访问Microsoft Jet(.MDB)数据库时。

    • 与ODBC兼容

    • DAO允许数据有效检查

    • DAO允许用户说明表与表之间的关系

 

当然,DAO的出现并不意味着ODBC已经过时了。如果用户的工作必须严格限于ODBC数据源,尤其是在开发Client/Server结构的应用程序时,用ODBC有较好的性能。

基于Arduino与Velostat的智能鞋垫:DIY足底压力监测系统全解析 压力传感器是物联网和健康监测领域的基础元件,其核心原理是将物理压力转换为可测量的电信号。通过压阻效应,材料的电阻值随压力变化,从而实现压力感知。这项技术为低成本、定制化的健康监测方案提供了可能,尤其在运动分析和康复训练中具有重要价值。本文聚焦于利用Velostat压敏材料和Arduino平台,详细解析如何从传感器制作、信号调理到无线数据传输,构建一套完整的足底压力监测系统。文中深入探讨了传感器阵列构建、信号滤波等关键技术,并针对常见问题提供了实用的解决方案,为创客和开发者实现可穿戴健康监测设备提供了清晰的工 阅读详情

相关推荐

Nsight Compute内存图表实战:如何快速定位CUDA内核的内存瓶颈(附配置截图)

本文详细介绍了如何使用Nsight Compute的Memory Chart功能快速定位和诊断CUDA内核中的内存性能瓶颈。通过解析内存图表中的逻辑与物理单元节点、连线颜色含义,并结合实战案例(如低L1缓存命中率、共享内存Bank冲突、全局内存访问未合并),指导开发者从可视化数据回溯至源代码,进行精准有效的内存访问优化,从而提升GPU程序性能。

zeta9的博客 481

ADO和DAO的区别

ADO(ActiveX Data Objects)是微软的一种数据库访问技术,可以用于访问各种不同数据库系统,如 MySQL、SQL Server、Oracle 等。ADO 的接口灵活,可以使用脚本语言或编程语言来操作,如 VBScript、JavaScript、C++ 等。 DAO(Data Access Objects)是微软早期为 Access 开发的一种数据库访问技术,主要用于访问 Acc...

weixin_42577735的博客 671

AI代码标注专家Prompt指令的最佳实践

AI代码标注专家 Prompt 可作为项目级别提示词使用,专门负责为 AI 生成的代码添加特定的注释标记,然后基于 Node 脚本可以初步统计出 AI 代码占比。

💻 Code:TypeScript / Engineering 🤖 AI:Prompt Optimization / Context Memory / Coding Agents 616

知识点滴 - ODBC和ADO的区别

通常,软件应用程序是用特定的编程语言(如Java、C#等)编写的,而数据库则接受其他一些数据库特定语言(如SQL)的查询。因此,当一个软件应用程序需要访问数据库中的数据时,需要一个能够将语言相互转换的接口(应用程序和数据库)。ODBC是一个开放的接口,任何应用程序都可以使用它与任何数据库系统进行通信,而ADO是OLE DB的一个包装(它是ODBC的继承者)。ADO在用某种编程语言编写的应用程序和OLE DB(由微软开发的数据API,是ODBC的继承者)之间形成了一个中间件层。...

guoqx的专栏 1903

ZYNQ软件复位重启、程序跳转的实现方法(Multiboot)

目录一、增加FSBL的调试信息 一、增加FSBL的调试信息 启动过程的调试信息如下: Xilinx First Stage Boot Loader Release 2016.4 Jan 19 2020-10:35:00 Devcfg driver initialized Silicon Version 3.1 Boot mode is QSPI Single Flash Informat...

weixin_41922484的博客 2万+

MAX30102心率血氧传感器

估算AC、DC值的方法如下:找两个波谷点,两个波谷点之间有一个波峰点,两个波谷点相连成一条直线,与Y轴平行的线穿过波峰点会与两个波谷点连接成的直线相交于一点,这个点就是DC点,DC点的Y轴对应值就是直流分量,AC分量的值为波峰点到DC点之间的差值。在医院测量中常用的一种血氧采集方式,如下图所示,光电传感器和光源分别置于手指的两侧,光源穿过手指被另一侧的光电二极管接收,根据光衰减量计算血氧浓度。那么,根据上面的Beer-Lambert 定理,针对测量的具体场景,测量过程的衰减为三层穿透物质衰减量的叠加。

qq_41861711的博客 1万+

ADO和DAO的主要区别

ADO和DAO的主要区别是:          DAO   的设计思想使用一种接口来访问多种类型的数据。它在处理时使用Microsoft.Jet接口的ODBC数据源。DAO.Jet数据库服务的最独特的方面 就是它有自己的查询引擎。但它的最大弱点是由于查询服务运行于本地机上,这就意味着在处理任何远程数据请求之前,必须把所有的数据都传输到本地工作站上, 但在低速连接中调用大量数据时这是一个缺点。

wangluozhangleilei的专栏 3496

避坑指南:麒麟系统ARM架构下PostGIS离线安装常见问题解析

本文深度解析了在国产麒麟系统ARM64架构下进行PostGIS离线安装的完整路径与核心避坑点。通过对比Docker容器化与源码编译两种部署方式的优劣,详细阐述了离线Docker环境搭建、ARM64镜像获取验证、容器化配置及常见故障排查的全流程,为在特殊环境下稳定部署空间数据库提供了一套可靠的实践指南。

Python的专栏 287

ADO,OLEDB,ODBC,DAO,RDO的区别

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给OD

Rya的专栏 1984

海康Visionmaster-全局脚本:VM 加载方案后自动执行 的方法,如何让VM在方案加载后自动执行流程?

海康Visionmaster-全局脚本:VM 加载方案后自动执行 的方法,如何让VM在方案加载后自动执行流程?

视觉人机器视觉的博客 2038

2026 最新安全 Skill 合集(CTF / 审计 / 渗透 / 红队)威胁建模一网打尽

2026年安全领域进入"Skill化"时代,各类安全能力被结构化封装为可复用的AI Skill。本文介绍了7个核心安全Skill项目:渗透测试全流程的AgentSkillsHub、CTF解题技能库ctfskills、多语言代码审计工具codeaudit、PHP专项审计系统、Java自动化审计流水线、威胁建模工具threatmodeling以及覆盖30+领域的Anthropic-Cybersecurity-Skills。这些项目将传统安全经验转化为标准化、可验证、可自动执行的模块化能力,支

Chengbei11的博客 1885

JDBC08DAO 层的编写规范

.....

BUZHIDAO52的博客 229

第 5 篇:责任链模式 (Chain of Responsibility) —— 协议栈的流水线

本文介绍了责任链模式在嵌入式通信协议解析中的应用。针对传统"面条式"代码维护困难的问题,提出将各协议解析器解耦为独立处理单元,通过链表形式串联。文章详细展示了模式实现:定义抽象处理者接口、实现具体协议处理器、构建链表管理器。该方案具有内存占用低(O(1)栈空间)、可动态扩展、支持优先级调整等优势,并探讨了性能优化策略及动态插件系统等扩展应用,为嵌入式通信协议处理提供了清晰的架构方案。

一路往蓝-Anbo 的博客 179

08.javaApl(DAO)

DAO模式实现学生管理系统 1.cn.zking.utils 数据工具包 2.cn.zking.entity 实体包 3.cn.zking.dao 数据访问包 4.cn.zking.ui 显示层包 5.cn.zking.test 测试包 编写cn.zking.utils包 在该包下创建数据可以帮助类 DBHelper 类 private static final string URL="jdbc:sqlserver://localhost:1433;DatabaseName=db_st

weixin_62232726的博客 253

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

错误记录:今天在学习期间遇到Could not initialize class com.web08.dao.impl.StudentDAOlmpl报错

今天学习三层架构的时候,在访问jsp文件的时候遇到这么一个报错: Could not initialize class com.web08.dao.impl.StudentDAOlmpl。 翻译出来的错误原因,看起来说的是,class definition没找到:不能初始化这个类。 当我再回过头发现自己在调用StudentDAOlmpl实现类的时候将它部署在全局属性,并设置private,私有的。其他类就不能找到并调用它了。去掉private后程序成功运行。 ...

qq_47043112的博客 1848

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Java从零到架构师第二季】【08】引入DAO_JDBC封装

持续学习&持续更新中… 学习态度:守破离 引入DAO编写一个小例子(数据库+Servlet+JSP)准备工作添加jar包到项目建表 & 初始化表数据编写Java代码CustomerListServletAddCustomerServletlist.jspaddcustomer.html该例子存在的一些问题引入DAO引入DAO命名规范引入配置文件一些细节和建议参考 编写一个小例子(数据库+Servlet+JSP) 准备工作 添加jar包到项目 将mysql的驱动和JSP的taglibsja.

Keep Reading Keep Writing Keep Thinking 279

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

2022-08-24 学习笔记 day47-DAO封装与实体封装

DAO (Data Access Object) ——数据库访问对象 数据库访问对象在开发时提供针对某张表的操作细节【增删改查】 在管理系统开发时,通过数据库访问对象可以避免反复的SQL命令书写 在管理系统开发时,通过数据库访问对象可以避免反复的JDBC开发步骤书写.........

weixin_56090951的博客 592

Java学习入门-08 -基本概念--PO、VO、DAO、BO、POJO

几种对象(PO,VO,DAO,BO,POJO)关系示意图 说这几种对象前我们最好先对MVC三层架构有一定了解,M代表数据层、V代表展示层、C代表逻辑层(控制层)。但我们也必须了解并不是所有项目都遵循MVC,必须前后端分离架构,后端负责暴露接口给前端使用,我们一般将后端分为:Repository层、Controller层、...

weixin_42172723的博客 165

2019.03.08(mybatis框架Dao和service层实现案例)

mybatis框架Dao和service层实现案例代码编写规范单表查询Dao层service层多表查询实体类Dao层 代码编写规范 接口名必须与mapper的文件名保持一致 接口包的路径和nameSpace保持一致 接口里面的方法名与id的名字保持一致3,接口里面的方法名与id的名字保持一致 接口里面的返回值类型与ResultType(Map) 保持一致 接口里面的参数必须与ParamterTy...

JAVA & HTML 918

2018_03_08 mybatis原始dao开发,mapper接口开发

github代码地址:点击打开链接Mapper动态代理方式,开发规范:Mapper接口开发需要遵循以下规范:1、  Mapper.xml文件中的namespace与mapper接口的类路径相同。2、  Mapper接口方法名和Mapper.xml中定义的每个statement的id相同3、  Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的...

liujiaxin_lei的博客 322

08 ArkTS 类与静态方法设计:单例、DAO 与设计令牌

本文介绍了ArkTS在鸿蒙应用开发中的三种典型类设计模式:单例模式(DatabaseService)、静态常量类(AppColors)和全静态方法类(DAO)。重点解析了单例模式的实现,包括私有静态实例、防重入初始化机制、数据库连接管理等核心功能,以及如何确保全局唯一访问。静态类用于管理设计令牌(如颜色常量),DAO类封装数据操作逻辑。文章通过"鹿鹿"项目实例,展示了ArkTS面向对象特性在HarmonyOS开发中的最佳实践。

weixin_72566747的博客 233

SpringBoot-08:买家订单---Dao层的实现

文章目录一、买家订单主表1. OrderMaster2. OrderStatuEnum3. PayStatusEnum4. OrderMasterRepository5. OrderMasterRepositoryTest二、买家订单详情表1. OrderDetail2. OrderDetailRepository3. OrderDetailRepositoryTest 一、买家订单主表 买家订...

你今天真好看呀 866

java bo代表什么_Java学习入门-08 -基本概念--PO、VO、DAO、BO、POJO

几种对象(PO,VO,DAO,BO,POJO)关系示意图说这几种对象前我们最好先对MVC三层架构有一定了解,M代表数据层、V代表展示层、C代表逻辑层(控制层)。但我们也必须了解并不是所有项目都遵循MVC,必须前后端分离架构,后端负责暴露接口给前端使用,我们一般将后端分为:Repository层、Controller层、Service层,其中Repository层负责数据访问,Controller层...

weixin_36015177的博客 2793

63 Defi过后,人生第一次玩DAO----超级君【2020-08-22 2234】

63 Defi过后,人生第一次玩DAO----超级君【2020-08-22 2234】

weixin_61772031的博客 291

学习日志day20(2021-08-04)(1、Dao模式 2、DBhelper类 3、RowMapper接口 4、内部类 )

学习内容:学习JDBC(Day20) 1、Dao模式 2、DBhelper类 3、RowMapper接口 1、Dao模式 (1)Dao层:Data Access Object,每个DAO中封装了对一个实体(Entity)类的CRUD操作。Dao层就是数据访问层。 (2)在Dao包中创建对不同实体类进行操作的Dao,调用UserDao中定义的方法操作User表中的数据。 public class UserDao { private static final String DRIVER = "com.

huzige_的博客 349

java连接数据库dao层,2019-08-23 JDBC:连接数据库的一种技术 /持久层(DAO)的技术

package com.foreknow.jdbcdemo;import java.security.interfaces.RSAKey;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Sta...

weixin_39926040的博客 205
上一篇: 03MFC的ODBC类简介
下一篇: 10.9 自动注册DSN和创建表
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值