利用Dao访问数据库
- 格式:doc
- 大小:35.00 KB
- 文档页数:16
Domino 附件和对象服务(DAOS)什么是 DAOS ?Lotus Domino 附件和对象服务(Domino Attachment and Object Service,DAOS)是 Lotus Domino 8.5 新推出的全新附件存储方式。
相比于以前的附件存储,DAOS 极大降低了附件的存储空间,减少了对磁盘 I/O 的读写,从而提高了 Domino 服务器的性能。
一般的数据库,附件所占存储比例都在50% ~ 90% 之间,因此在 Domino 服务器的磁盘上,有数量众多大小不一的附件,其中,有些附件是完全相同的。
比如,用户在某个数据库中放入一个附件,又在某个时候将这个附件放入另外一个数据库,此时,Domino 服务器将两份附件分别存储在两个不同的数据库中。
这是两份完全相同的附件,能不能在 Domino 服务器上只存储一份呢?如果能,那不是可以节省服务器的存储空间吗?事实上,DAOS 就是这么做的。
无论用户在数据库中存入多少份附件,DAOS 所做的就是保证相同的附件在Domino 服务器上只保存一份,如下图 1 所示。
图 1. DAOS 和非 DAOS 比较当然,DAOS 带来的好处绝非仅仅是节省存储空间,更重要的是使 Domino 服务器减少 I/O 读写操作数和 I/O 读写数据量,从而提高了 Domino 服务器的性能。
此外,对于管理员来说,由于数据库空间的减小,使得数据库压缩操作完成得更快,耗时减小,在 IBM 测试中,数据库压缩可以快 2 ~ 7倍。
由于单附件节省了存储空间,对数据库的备份比之前更快。
并且,DAOS 对用户和 API 都是透明的。
回页首DAOS 设置和工作原理需要注意的是,Lotus Domino 8.5 缺省设置并不启用 DAOS。
要启用 DAOS,先决条件是 Domino 服务器启用事务日志(事务日志可以在服务器文档里启用),同时,在服务器文档“DAOS”栏设置启用DAOS。
数据库的连接rogerwen@数据库的连接方式ODBC早期的数据库连接是非常困难的. 每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解. 因此,能处理各种各样数据库的通用的API就应运而生了. 也就是现在的ODBC(Open Database Connectivity), ODBC是人们在创建通用API的早期产物. 有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库. ODBC兼容的数据库包括Access, MS-SQL Server, Oracle, Informix等.⏹OLE-DB(Object Linking and Embedding DataBase)对象链接和嵌入数据库。
它依赖于COM和提供OLE DB提供者的厂商而非ODBC使用的SQL。
⏹ADO(ActiveX Data Object)ActiveX数据对象。
基于OLE-DB建立连接的局部和远程数据库访问技术。
ODBCODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。
这些API利用SQL来完成其大部分任务。
ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
---出现的最早,但不总是万能。
OLE DBOLE DB 是Microsoft 的一个战略性系统级编程接口,用于管理整个组织内的数据。
OLE DB 是建立在ODBC 功能之上的一个开放规范。
ODBC 是为访问关系型数据库而专门开发的,OLE DB 则用于访问关系型和非关系型信息源,例如主机ISAM/VSAM 和层次数据库,电子邮件和文件系统存储,文本、图形和地理数据以及自定义业务对象。
基于Visual C++的数据库访问技术研究摘要:随着计算机技术的迅猛发展,数据库技术也逐渐走入人们的视野,而作为众多编程语言之中较为优良的一种,visual c++对于数据库访问技术的支持是相对全面及系统的。
本文主要对数据库的访问平台与技术进行相关分析,比较了以visual c++为前提的数据库访问技术的特点,并进行各技术之间优势与缺点的对比。
关键词:visual c++ 数据库访问技术1.前言数据库访问技术将数据库外部及其通信过程进行抽象化,再通过不同访问接口的提供,简化客户端访问数据库的方式与过程,数据库接口主要分为通用语专用两种,通用接口提供了不同数据库系统通信的统一接口,进而能够通过其中一段代码的编写来实现多数类型数据库的复杂频繁操作,而专用数据库接口则相对具有较大的局限性。
visual c++所提供的数据库访问技术有odbc api、mfc odbc、dao、rdo、oledb、ado等,上述技术都具有各自的特点,并提供了灵活、简单、可扩展性良好以及访问速度较快的开发技术。
笔者将对相关访问技术作简要的概述并作相应的比较研究。
2.基于visual c++的数据库系统环境分析2.1三层结构数据库管理系统主要采用b/s结构进行架构,其结构的分层满足用户与数据之间的调用。
b/s结构中的系统可以分为客户端、应用层以及数据库等三个方面。
其中,客户端主要负责应用层处理结果的展示工作,应用层则与客户端分离,主要部署于服务端,应用服务器能够实现科学高效的链接,当应用层的应用发生变化时并不会对客户端与数据库产生任何影响。
2.2 sql serversql server2005是一种主要依靠内部的映射关系运行的相对复杂的数据库,它是集成、复制、通知、分析以及报表等相关服务的有效结合。
在数据库语言之中,select语句是复杂程度最高且作用最大的语句,其主要作用为查询数据库,select子句指定查询返回的列、where子句与having子句排除不符规范的行、group by子句负责旋转输出行组,而当having子句涉及聚合函数时计算各组汇总值,from子句则集返回初始结果。
ADO技术在VB访问SQL数据库中的应用作者:柏建普杜娟来源:《电脑知识与技术》2013年第29期摘要:随着数据库开发技术的广泛应用,利用Visual Basic进行C/S应用程序开发是目前较为典型的做法。
该文通过一个仓库信息管理系统的设计和开发,详细介绍了在VB环境下,利用ADO接口技术实现与SQL Server 2005数据库连接及访问的过程。
关键词:VB;数据库访问;ADO技术中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)29-6481-05在数据库应用系统的开发中,数据库访问技术是一个重要的组成部分,它是连接前端应用程序和后台数据库的关键环节。
和VC、Delphi等高级语言相比, VB具有不可取代的简单易用性和真正的“所见即所得”的特性。
VB不但为用户提供了较为完善的文件访问和处理功能,同时具备了强大的数据库管理功能,利用数据库技术处理大型的管理信息系统(MIS)远比通过文件处理的效率高[2]。
1 Visual Basic 数据库访问技术使用VB6.0可以创建将每个步骤封装在数据访问系统中的部件。
从数据源开始,Microsoft 可视化数据工具提供了在SQL和Oracle系统中查看并操作表、视图、存储过程和数据库结构描述的功能[1]。
数据源是数据提供程序和数据使用者之间的桥梁,可以通过ADO(Microsoft ActiveX Data Objects)创建数据源。
ADO是VB在任何数据源中访问数据的主要方法。
开发基于VB的数据库应用,可以通过数据访问对象DAO (Data Access Object)、远程数据对象RDO(Remote Data Object)和ActiveX数据对象ADO(ActiveX Data Objects)等三种数据访问接口。
数据访问接口是一个对象模型,它代表了访问数据的各个方面。
使用VB,可以在任何应用程序中通过编程控制连接、语句生成器和供使用的返回数据[1]。
目前主流的四大数据库为:access, SQL SERVER, ORACLE微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。
它提供了编程语言和统一数据访问方式OLE DB的一个中间层。
允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。
访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。
ADO被设计来继承微软早期的数据访问对象层,包括RDO (Remote Data Objects) 和DAO(Data Access Objects)。
ADO 在1996年冬被发布。
ADO包含一些顶层的对象:连接,代表到数据库的连接记录集,代表数据库记录的一个集合命令,代表一个SQL命令记录,代表数据的一个集合流,代表数据的顺序集合错误,代表数据库访问中产生的意外字段,代表一个数据库字段参数,代表一个SQL参数属性,保存对象的信息ADO组件的使用需要利用支持COM的高级语言,例如ASP中的VBScript或者Visual Basic,甚至Delphi,微软的竞争对手Borland的一个产品,现在也支持使用ADO来访问数据库。
在新的编程框架.NET Framework中, 微软也提供了一个面向Internet的版本的ADO,称为。
其对象模型和传统ADO差别很大。
ADO是一种面向对象的编程接口,微软介绍说,与其同IBM和Oracle提倡的那样,创建一个统一数据库,不如提供一个能够访问不同数据库的统一接口,这样会更加实用一些。
为实现这一目标,微软在数据库和微软的OLE DB中提供了一种“桥”程序,这种程序能够提供对数据库的连接。
开发人员在使用ADO时,其实就是在使用OLE DB,不过OLE DB更加接近底层。
ADO的一项属性远程数据服务,支持“数据仓库”ActiveX 组件以及高效的客户端缓存。
/CN/view/zh/26998539WINCC作为一个工控软件,有着工控软件的一系列特征:能显示实时数据,历史数据,生成实时数据曲线与历史数据曲线,并能生成报表。
然而WINCC与其它的工控软件包有不同的地方:它的数据是保存在标准的及功能强大的Sybase SQL Anywhere数据库中,所以,我们可以像访问一般的数据库一样,通过ODBC直接访问WINCC的历史数据库。
一、通过Sybase Central 4.0访问显示数据Wincc 在安装时就把Sysbase数据引擎与Sybase Central 4.0一同安装到系统中,你可以在Program Files\Sybase\Shared\ 中找到Sybase Central 4.0 ,你可在在其目录下\Java\中发现scjview.exe,该程序功能相当于SQL Server的企业管理器。
你可以通过其查看你在WinCC中的归档数据。
使用方法:1) 运行WINCC,这时WINCC会在ODBC中添加两条数据源:CC_FY_02-10-16_10:40:18CC_FY_02-10-16_10:40:18R其中CC_FY_02-10-16_10:40:18R 是可以通过 Sybase Central 4.0 及别的一些工具不用用户名与密码读取的。
这就是我们WinCC的历史数据库。
注意:这两条ODBC名不是一成不变的,它是结构如下CC_FY_02-10-16_10:40:18RCC:固有的,指明是WinCC生成的ODBC。
FY :项目名,这是我这个WinCC项目名称02-10-16:最后一次修改的日期。
10:40:18:最后一次修改的时间。
R:表示是运行库。
2)、运行scjview.exe,点击Adaptive Server AnyWhere 7 按右键,选择Connect。
将会弹出Connect配置界面。
在Identification的页面,选中ODBC SOURCE NAME 点BROWSE则会列出所有对Sybase数据引擎的ODBC名,选择CC_FY_02-10-16_10:40:18R,点击“OK“、“OK“即可。
VC++数据库访问---DAO MFC DAO在编程方法上并没有太多的不同,例如在这里以类CDaoDatabase代替了前面的CDatabase,以CDaoRecordSet代替了CRecordSet等。但两者也不是完全一样,依据用户使用的数据系统不同,选择不同接口会导致应用性能方面的较大差异,例如要通过Microsoft Jet数据引擎访问Microsoft Access数据库,使用DAO就会有显著的性能优势。另外,DAO接口还有其他一些特点,比如可以通过DAO访问数据库中的数据和数据库的定义,而且,DAO本身就是一组COM接口,加上MFC的封装,在很程度上会简化编程。
1。MFC DAO与数据库 DAO--数据访问对象,提供了一种通过程序代码创建和操作数据库的机制。要向深入了解DAO创建和操作数据库的手段,必须先对Microsoft Jet数据引擎有一定的了解。简单的说,Microsoft Jet是一种数据管理组件,许多数据库工具(如Access等)都是通过它实现其功能的,同时,通过Jet引擎可以访问数据库中的数据和数据库结构定义。DAO通过Microsoft Jet数据引擎提供了一套对象,包括:数据库对象(Database)、表定义(TableDef)、查询定义对象(QueryDef)和记录集对象(Recordset)等。MFC DAO 封装了DAO的功能,说到底是通过Microsoft Jet数据引擎来访问系统和用户数据库中的数据。 一般来说,基于DAO的MFC类比基于ODBC的MFC类处理能力更强。因为基于DAO的类可以通过ODBC驱动,也可以通过自己的数据库引擎(Jet)存取数据。 下面举例说明常见的数据库的访问方式与技巧。首先介绍CDaoDatabase类以及CDaoDataBase::Open()函数。 类CDaoDatabase提供了一个和MFC ODBC类CDatabase类似的接口。但是它们之间也有区别,表现在CDatabase是通过ODBC和ODBC驱动程序存取数据的,而CDataDatabase则是通过数据存取对象存取数据的。 通过DAO访问不同的数据库的关键在于CDaoDatabase::Open()函数。该函数的原型如下: Open(LPCTSTR lpszName,BOOL bExclusive=FALSE,BOOL bReadOnly=FALSE,LPCTSTR lpszConnect=_T(""));
lpszName-要打开的数据库路径。 bExclusive-以独占方式(TRUE)或共享方式(FALSE)打开。 bReadOnly-以只读方式(TRUE)或读/写方式(FALSE)打开。 lpszConnect-说明连接数据库的属性字段(这就是“关键”所在)。
下面介绍DAO如何访问两个常用的数据源: 1)Access数据库 这是Microsoft Jet数据引擎能够读取的数据库中,通过DAO访问效率最高的数据库(.mdb)之一。访问Access数据库的方法最简单,只要Open()函数给出第一个参数,其他三个参数都缺省就表示打开一个Access数据库,这里就不举例了。 2)ODBC数据源 通过DAO访问ODBC数据源必须同时具有相应的ODBC驱动程序。ODBC数据库包括SQL Server,Oracle Server等。 例如,可以用Class Wizard从CDaoRecordSet派生一个新类,这个新类可以访问ODBC数据源。
2.处理DAO对象 1)异常处理 对数据库的错误操作经常会引发异常,利用MFC DAO进行的数据库编程也一样,这里首先给出DAO异常处理函数,以备后文使用。 void DispDaoException(CDaoException *e) { CString str; if(e->m_pErrorInfo!=NULL) { str.Format( _T("%s (%d)\n\n") _T(Would you like to reference?"), (LPCTSTR)e->m_pErrorInfo->m_strDescription, e->m_pErrorInfo->m_lErrorCode); if(AfxMessageBox(str,MB_YESNO)==IDYES) { WinHelp(GetDesktopWindow(), e->m_pErrorInfo->m_strHelpFile, HELP_CONTENT, e->m_pErrorInfo->m_lHelpContent); } } else { str.Format( _T("ERROR:CDaoException\n\n") _T("SCODE_CODE =%d\n") _T("SCODE_FACILITY =%d\n") _T("ResultFromScode=%d\n"), SCODE_CODE(e->m_scode), SCODE_FACILITY(e->m_scode), SCODE_SEVERITY(e->m_scode), ResultFromScode(e->m_scode)); AfxMessageBox(str); } } 2)数据库对象 在MFC中,DAO数据库对象是由CDaoDatabase类封装的,它代表了与数据库的连接,只有通过这个连接,应用程序才能实现对数据库的操作。 (1)新建数据库 创建一个数据库的基本思路是先用CDaoDatabase类构造一个空的数据库对象,然后调用CDaoDatabase类的Create()函数创建新的数据库。下面就来介绍创建mdb数据库的方法: CDaoDatabase db; try { db.Create("d:\\work\\test.mdb"); //全路径 } catch(CDaoException * e) { DispDaoException(e); e->Delete(); return; } catch(CMemoryException*e) { //内存异常处理 } 从Create()函数的原型中可以选择更多的创建数据库的限制条件。 (2)打开数据库 跟创建数据库类似,打开一个现有的数据库应用应该先用CDaoDatabase类构造一个空的数据库对象,然后用CDaoDatabase类的Open()函数打开数据库。具体代码实现如下: CDaoDatabase db; try { db.Create("d:\\work\\test.mdb"); //全路径 } catch(CDaoException * e) { DispDaoException(e); e->Delete(); return; } catch(CMemoryException*e) { //内存异常处理 } 需要说明的是,一般情况下,只要路径名正确,创建和打开数据库都不会出什么异常,但是为了程度的鲁棒性,在开发真是应用软件时,这些异常是非常必要的。 (3)关闭数据库 数据库对象使用完毕后需要关闭该对象,以免数据库中的数据会发生意外的丢失或改变,这与打开一个文件操作完毕后需要关闭文件的道理是一样的。要关闭一个数据库,只要调用CDaoDatabase类的Close()函数即可,具体实现如下: if (db.IsOpen()) db.Close(); 3)表定义对象 上面已经说明了如果建立和打开数据库,而数据库是由表组成的,因此这一部分继续介绍表的操作。 CDaoTableDef类对象封装了DAO表定义结构,该对象定义俩基础表和附加表。所谓基础表是Microsoft Jet数据库中的表,使用DAO对象可以操作表的结构,可以利用记录集或查询修改其中的数据,而附加表是指连接到Microsoft Jet数据库中的其他数据库表,附加表中的数据依然存放在外部数据库中。 (1)新建表 创建表定义对象的同时也为所操作的数据库增加一个新表,创建表定义后还需要接着为其添加字段(域),如果有必要还可以添加索引,否则这个表不能被加入到数据库的。新建一个表定义对象的过程如下:首先打开一个数据库,然后在数据库上使CDaoTableDef的构造函数构造一个表定义对象,然后用Create()函数创建新表(加入字段),最后调用Append()函数将新表加入到数据库中,为节省篇幅,异常处理部分仅用“//异常处理.....”代替。 if(!db.IsOpen()) //要进行下面的操作,数据库必须打开,db代表要操作的数据库 return; CDaoTableDef td(&db); //构造表对象 //创建新表 try { td.Create("PERSONNEL"); } //异常处理...... //加入字段“EMPLOYEE_ID” try { td.CreateField("EMPLOYEE_ID",dbLong,dbAutoIncrField); } //异常处理...... //加入字段”EMPLOYEE_NAME" try { td.CreateField("EMPLOYEE_NAME",dbText,10,dbVariableField); } //异常处理......