利用Dao访问数据库Word文件下载.docx

上传人:b****6 文档编号:19963598 上传时间:2023-01-12 格式:DOCX 页数:9 大小:18.68KB
下载 相关 举报
利用Dao访问数据库Word文件下载.docx_第1页
第1页 / 共9页
利用Dao访问数据库Word文件下载.docx_第2页
第2页 / 共9页
利用Dao访问数据库Word文件下载.docx_第3页
第3页 / 共9页
利用Dao访问数据库Word文件下载.docx_第4页
第4页 / 共9页
利用Dao访问数据库Word文件下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

利用Dao访问数据库Word文件下载.docx

《利用Dao访问数据库Word文件下载.docx》由会员分享,可在线阅读,更多相关《利用Dao访问数据库Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。

利用Dao访问数据库Word文件下载.docx

类CDaoDatabase提供了一个和MFCODBC类CDatabase类似的接口。

但是它们之间也有区别,表现在CDatabase是通过ODBC和ODBC驱动程序存取数据的,而CDataDatabase则是通过数据存取对象存取数据的。

通过DAO访问不同的数据库的关键在于CDaoDatabase:

该函数的原型如下:

Open(LPCTSTRlpszName,BOOLbExclusive=FALSE,BOOLbReadOnly=FALSE,LPCTSTRlpszConnect=_T("

"

));

lpszName-要打开的数据库路径。

bExclusive-以独占方式(TRUE)或共享方式(FALSE)打开。

bReadOnly-以只读方式(TRUE)或读/写方式(FALSE)打开。

lpszConnect-说明连接数据库的属性字段(这就是“关键”所在)。

下面介绍DAO如何访问两个常用的数据源:

1)Access数据库

这是MicrosoftJet数据引擎能够读取的数据库中,通过DAO访问效率最高的数据库(.mdb)之一。

访问Access数据库的方法最简单,只要Open()函数给出第一个参数,其他三个参数都缺省就表示打开一个Access数据库,这里就不举例了。

2)ODBC数据源

通过DAO访问ODBC数据源必须同时具有相应的ODBC驱动程序。

ODBC数据库包括SQLServer,OracleServer等。

例如,可以用ClassWizard从CDaoRecordSet派生一个新类,这个新类可以访问ODBC数据源。

2.处理DAO对象

1)异常处理

对数据库的错误操作经常会引发异常,利用MFCDAO进行的数据库编程也一样,这里首先给出DAO异常处理函数,以备后文使用。

voidDispDaoException(CDaoException*e)

{

 

CStringstr;

if(e->

m_pErrorInfo!

=NULL)

str.Format(

_T("

%s(%d)\n\n"

_T(Wouldyouliketoreference?

),

(LPCTSTR)e->

m_pErrorInfo->

m_strDescription,

e->

m_lErrorCode);

if(AfxMessageBox(str,MB_YESNO)==IDYES)

WinHelp(GetDesktopWindow(),

m_strHelpFile,

HELP_CONTENT,

m_lHelpContent);

}

else

ERROR:

CDaoException\n\n"

SCODE_CODE=%d\n"

SCODE_FACILITY=%d\n"

ResultFromScode=%d\n"

SCODE_CODE(e->

m_scode),

SCODE_FACILITY(e->

SCODE_SEVERITY(e->

ResultFromScode(e->

m_scode));

AfxMessageBox(str);

2)数据库对象

在MFC中,DAO数据库对象是由CDaoDatabase类封装的,它代表了与数据库的连接,只有通过这个连接,应用程序才能实现对数据库的操作。

(1)新建数据库

创建一个数据库的基本思路是先用CDaoDatabase类构造一个空的数据库对象,然后调用CDaoDatabase类的Create()函数创建新的数据库。

下面就来介绍创建mdb数据库的方法:

CDaoDatabasedb;

try

db.Create("

d:

\\work\\test.mdb"

);

//全路径

catch(CDaoException*e)

DispDaoException(e);

Delete();

return;

catch(CMemoryException*e)

//内存异常处理

从Create()函数的原型中可以选择更多的创建数据库的限制条件。

(2)打开数据库

跟创建数据库类似,打开一个现有的数据库应用应该先用CDaoDatabase类构造一个空的数据库对象,然后用CDaoDatabase类的Open()函数打开数据库。

具体代码实现如下:

需要说明的是,一般情况下,只要路径名正确,创建和打开数据库都不会出什么异常,但是为了程度的鲁棒性,在开发真是应用软件时,这些异常是非常必要的。

(3)关闭数据库

数据库对象使用完毕后需要关闭该对象,以免数据库中的数据会发生意外的丢失或改变,这与打开一个文件操作完毕后需要关闭文件的道理是一样的。

要关闭一个数据库,只要调用CDaoDatabase类的Close()函数即可,具体实现如下:

if(db.IsOpen())

db.Close();

3)表定义对象

上面已经说明了如果建立和打开数据库,而数据库是由表组成的,因此这一部分继续介绍表的操作。

CDaoTableDef类对象封装了DAO表定义结构,该对象定义俩基础表和附加表。

所谓基础表是MicrosoftJet数据库中的表,使用DAO对象可以操作表的结构,可以利用记录集或查询修改其中的数据,而附加表是指连接到MicrosoftJet数据库中的其他数据库表,附加表中的数据依然存放在外部数据库中。

(1)新建表

创建表定义对象的同时也为所操作的数据库增加一个新表,创建表定义后还需要接着为其添加字段(域),如果有必要还可以添加索引,否则这个表不能被加入到数据库的。

新建一个表定义对象的过程如下:

首先打开一个数据库,然后在数据库上使CDaoTableDef的构造函数构造一个表定义对象,然后用Create()函数创建新表(加入字段),最后调用Append()函数将新表加入到数据库中,为节省篇幅,异常处理部分仅用“//异常处理.....”代替。

if(!

db.IsOpen()) 

//要进行下面的操作,数据库必须打开,db代表要操作的数据库

CDaoTableDeftd(&

db);

//构造表对象

//创建新表

td.Create("

PERSONNEL"

//异常处理......

//加入字段“EMPLOYEE_ID”

td.CreateField("

EMPLOYEE_ID"

dbLong,dbAutoIncrField);

//加入字段”EMPLOYEE_NAME"

EMPLOYEE_NAME"

dbText,10,dbVariableField);

//表表加入到库中

td.Append();

td.Close();

//注意,表也要关闭

if(db.IsOpen())

(2)打开表

首先打开表所在的库,然后在该库上调用CDaoTableDef的构造函数定义一个表对象,然后用Open()函数打开表:

//打开表

td.Open("

(3)修改表的结构

修改表的结构包括表中添加、删除字段,或者对某一字段添加、删除索引。

其操作过程是,先打开表所在的数据库,然后打开表,最后调用CDaoTableDef:

CreateField()和CDaoTableDef:

DeleteField()添加、删除字段,用CDaoTableDef:

CreateIndex()和CDaoTableDef:

DeleteIndex()添加、删除索引。

//加入字段”EMPLOYEE_ADDRESS"

EMPLOYEE_ADDRESS"

dbText,45,dbVariableField);

(4)删除表

删除表会表表的定义和表中的数据一起删除。

db.DeleteTableDef("

4)记录集对象

CDaoRecordSet封装了Dao记录集对象,用于管理一个来自表定义(基础表)或查询定义的记录集合。

CDaoRecordSet对象有三中使用的原型,如下表说是:

DaoRecordSet对象的几种类型

---------------------------------------------------------------------------------------------------------------

类型 

说明

table-type 

|基于单个数据表,可对记录施加增、删、该的操作

dynaset-type 

|基于组合查询,可以包含来自一个或多个表的字段,可对一个或多个表施加操作

snapshot-type 

|基于组合查询的静态拷贝,可以包含来自一个或多个表的字段,可以查询数据

|和生成报表,但不能对其进行更新

下面讲述对记录集的几种常见操作:

(1)新建记录集

有两种使用记录集的方法:

第一种是直接从CDaoRecordSet类创建记录集,并且动态绑定记录字段,这种方法这里不作详细介绍;

第二种是使用ClassWizard创建CDaoRecordSet类的派生类,并利用DFX机制记录数据与记录集字段数据成员之间的映射。

下面以创建到记录集的映射为例,简要说明第二种方法(这种方法在ODBC访问数据库方式下也可以类似使用,不过把基类选为CRecordSet就可以了)。

在类向导的数据库表选择对话框中,可以一次选择多个表,即可以实现表到记录集多对一的映射关系。

(2)添加记录

添加一条记录的基本过程如下:

首先打开数据库和表,接着定义一个表的CDaoRecordSet对象,然后调用CDaoRecordSet:

AddNew函数使表处于插入状态,再调用SetFieldValue函数给字段赋值,最后调用Update()函数完成插入。

由于前面已经介绍如何打开表,后面的过程非常明白,在这里就不要举例说明了。

仅列出主要语句:

rs.AddNew();

CStringstrSrc.Format("

%s"

str);

COleVarianttmpVal=COleVariant(strSrc);

rs.SetFieldValue("

EMP_NAME"

tmpVal);

rs.Update();

(3)修改记录

修改一条记录的基本过程如下:

首先打开数据库和表,接着定义一个表的CDaoRecordSet对象,然后按条件定位记录并调用CDaoRecordSet:

Edit()函数使表处于编辑状态,再调用SetFieldValue函数给字段赋新值,最后调用Update函数保存修改结果。

这里仅列出主要语句:

rs.Edit();

(4)删除记录

删除记录的过程比前两者都要简单,在定位记录以后只要调用CDaoRecordSet:

Delete函数就可以将当前记录删除了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1