MFCODBC数据库访问技术Word文档格式.docx

上传人:b****5 文档编号:21160436 上传时间:2023-01-28 格式:DOCX 页数:18 大小:583.09KB
下载 相关 举报
MFCODBC数据库访问技术Word文档格式.docx_第1页
第1页 / 共18页
MFCODBC数据库访问技术Word文档格式.docx_第2页
第2页 / 共18页
MFCODBC数据库访问技术Word文档格式.docx_第3页
第3页 / 共18页
MFCODBC数据库访问技术Word文档格式.docx_第4页
第4页 / 共18页
MFCODBC数据库访问技术Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

MFCODBC数据库访问技术Word文档格式.docx

《MFCODBC数据库访问技术Word文档格式.docx》由会员分享,可在线阅读,更多相关《MFCODBC数据库访问技术Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

MFCODBC数据库访问技术Word文档格式.docx

代表ODBC类产生的异常。

16.2.2使用MFCODBC编程建立应用程序

编程模型

相对于使用ODBCAPI,使用MFCODBC访问数据库简单得多,其步骤如下:

●首先创建数据库并在系统中设置好;

●使用CDatabase打开数据源的连接,如果利用AppWizard生成一个ODBC

数据库应用程序,则会自动完成操作。

●使用ClassWizard想到加入由CRecordset类派生的用户记录集,完成对数

据库表的绑定。

●创建记录积累对象,如果利用AppWizard生成一个ODBC数据库应用程

序,则会自动在文档类中创建。

●使用记录集对象对数据库进行遍历、增加、删除、和修改等操作。

●使用CDatabase类的ExecuteSQL函数直接执行SQL命令。

●使用CDatabase类的BeginTrans、CommitTrans和Rollback函数进行事务

处理。

●使用CDatabase类的Close函数关闭数据源连接。

2使用MFCODBC创建一个用户登录功能模块

建立数据库

这里我们采用Access各式的数据库,数据库创建过程如下:

*创建一个名为demo01的数据库;

*建立一个新的数据表,表名记为puser,用于存储用户信息。

这里我们建立

一个用户登录系统的界面,只要存放用户的ID,用户名、密码、以及权限即可。

这些作为表中的字段建立,并存储相应的数据。

如图16.2.1所示。

-1-

图16.2.1

设置数据源

Access数据库表

创建好数据库后我们还要进行配置,以便程序通过ODBC数据源来访问刚刚创建的数

据库。

不同的Windows操作系统中数据源的配置过程不尽相同,但差别不是很大,本例以

WindowsXP系统为例。

具体操作如下:

(1)选择开始菜单“控制面板——管理工具——数据源(ODBC),弹出“ODBC数据源管

理器”对话框,选择“系统DSN”选项卡,单击[添加]按钮,如图16.2.2所示。

图16.2.2ODBC数据源管理器

(2)

所示,单击[完成]按钮。

-2-

图16.2.3创建新数据源

(3)在弹出的“ODBCMicrosoftAccess安装”对话框中,配置数据源属性。

如图16.2.4

所示,依次配置数据源名为“demo01”

省略,我们只是为了更清楚地明白数据源的意义而添加此项的。

单击[选择]按钮。

图16.2.4ODBCMicrosoftAccess安装

(4)

找到“demo01.mdb”的路径,选中文件,单击[确定]按钮,如图16.2.5。

图16.2.5选择数据库

-3-

(5)此时退回到图16.2.4所示的“ODBCMicrosoft

Access安装”对话框,可以看

到其中的“数据库”标签后面增加了一行“E:

.mdb”

源所对应的数据库,单击[确定]按钮。

(6)此时退回到图16.2.2所示的“ODBC数据源管理器”对话框,可以看到已经存在

了名为“demo01MicrosoftAccessDriver(*.mdb)”的数据源。

单击[确定]按钮,结束数据源

的配置过程。

至此数据源的配置过程完成,后面需要进行VisualC++的程序编写了。

制作用户登录模块

(1)打开“MicrosoftVisualC++6.0”

选择Projects”

并选择工程存放路径。

(2)在如图16.2.6所示的“MFC应用程序向导步骤1”对话框中,选中“基本对话框”项,

我们要创建的是一个用户登录界面,建立一个登录对话框即可。

其他保持默认值,单击[下

一步]按钮。

图16.2.6MFC应用程序向导步骤1

(3)在“MFC应用程序向导步骤2”对话框中,保持各选项的默认值,单击[Next]按钮。

(4)在如图16.2.7所示的“MFC应用程序向导步骤3”对话框中,选择第三项“您希望使用

MFC库吗?

”为“作为静态的DLL”

图16.2.7MFC应用程序向导步骤3

-4-

(5)在如图16.2.8所示的“MFC应用程序向导步骤4”对话框中,保持各项默认值,然后单

击[完成]按钮。

图16.2.8MFC应用程序向导步骤4

(6)在最后弹出的对话框中,单击[确定]按钮,完成工程的创建。

至此,基于对话框的工程创建出来了,整个工程包含一个程序“Demo01”

含一个默认的对话框。

编辑对话框资源

将主编辑区切换到要编辑的对话框上,如图16.2.9所示,

图16.2.9对话框编辑

将需要用到的控件拖到要编辑的对话框中,

如图所示,即为我们要实现的一个用户登录界面。

添加变量

要想让对话框类中的变量接受对话框上控件的输入或向对话框输出,

的变量关联起来,以简化“控件—变量”之间频繁的数据交换,在我们要实现的用户登录界

面中要为用户名和密码的输入作控件变量关联。

(1)为输入用户名的编辑框控件进行变量关联。

选择“查看—建立类向导”菜单命

令,在弹出的“MFCClassWizard”对话框中,切换到“MemberVariables”选

项卡,如图16.2.10所示,然后在Classname下拉框中选择“CDemo01Dlg”项,

并且在ControlID单选框中选择“ID_USER_NAME”

-5-

按钮。

图16.2.10

(2)进行变量定义。

如图16.2.11,在弹出的“AddMemberV

次在Membervariablename框中输入“m_username”

择“Value”项,在“V

按钮完成设置。

图16.2.11

变量定义

(3)重复以上步骤,为输入密码的编辑框控件设置一个变量m_userpwd。

(4)在这个例子中只要为以上两个控件连接变量就足够了,完成所有的变量配置后

在“MFCClassWizard”对话框中单击[OK]按钮保存刚才的设置,这样才可以起

作用。

连接数据库

我们需要创建一个CRecordSet类的派生类CUserRecordset类来操作数据库

“Demo01.mdb”的表“puser”

(1)创建CUserRecordset类。

将WorkSpace切换到“ClassView”选项卡,如图16.2.12,

在“Domo01Classes”位置单击鼠标右键,然后选中“NewClass”菜单命令。

-6-

图16.2.12

添加新类

(2)从CRecordSet派生新类“CUserRecordset”

依次在Baseclass下拉框中选择“CRecoedSet”项,在Name下拉框中选择

“CUserRecordset”

图16.2.13

定义新类

(3)选择数据源。

数据源类型,然后在ODBC数据源的下拉框中选中“demo01”

默认值,如图16.2.14,最后单击[OK]按钮。

-7-

图16.2.14选择数据库

(4)在弹出的对话框“SelectDatabaseTables”中选择数据表,如图16.2.15,选中我们前

面创建的表“puser”

动增加了一个“CUserRecordset”

图16.2.15

添加表

到现在为止我们已经创建完了连到数据库的类“CUserRecordset”

“ClassView”窗口中我们可以看到在新添加的派生类“CUserRecordset”中已经自动定义了

4个变量,如图16.2.16,这4个变量正好与我们创建的表“puser”中的字段同名,并且类

型也是一致的。

这是MFC自动添加的变量,以绑定我们刚才选中的表中的字段。

需要说明

的是,如果表中字段的名是中文,则MFC会自动创建m_column1、m_column2等这样的变

量名来对应表中的字段。

-8-

图16.2.16

增加“确定”按钮的消息响应代码

系统自动添加的变量

在我们创建的用户登录界面中,

这就要求为[确定]按钮增加一个响应

函数。

(1)选中View—ClassWizard”

选中“MessageMap”选项卡。

(2)增加消息响应函数。

下拉框中选择CDemo01Dlg项,ObjectIDs单选框中选择IDOK项,Message

单选框中选择BN_CLICKED项,然后单击[AddFunction]按钮来为此消息增加

消息响应寒暑,此时会弹出一个确认框,保持其中的默认值并确认。

操作完后

我们可以看到在图中新增加了一行“OnOKON:

IDOK:

ON_CLICKED”

是新增加的消息响应函数。

[取消]按钮的响应函数与此类似,只不过它是重载了“OnClose”函数。

保存刚才的设

置,消息响应函数就添加完成了。

此时切换到“WorkSpace”的“ClassView”选项卡,在

“CDemo01Dlg”类中,可以看到其中增加了一个“OnOK”函数。

图16.2.17

-9-

添加按钮函数

编写“密码验证”代码

以上我们只是为[确定]按钮添加了一个响应鼠标单击消息的函数,如果我们要求在

单击此按钮时能够对输入的数据进行密码验证,

证的代码,在编辑区打开“OnOK”的函数定义,在此函数中编辑添加代码如下:

voidCDemo01Dlg:

:

OnOK()

{

//TODO:

Addextravalidationhere

UpdateData(TRUE);

CUserRecordset

Try

if(m_user.IsOpen());

m_user.Close();

m_user;

m_user.m_strFilter.Format("

username='

%s'

anduserpwd='

"

m_Uname,m_Upwd);

m_user.Open(CRecordset:

snapshot,NULL,CRecordset:

none);

if(m_user.IsEOF())

{m_user.Close();

AfxMessageBox("

密码错误,请重试!

);

return;

}

else

登录成功!

"

catch(CDBException*e)

e->

ReportError();

CDialog:

OnOK();

下面解释一下其中用到的部分函数和方法:

UpdateData(TRUE):

将表单中控件的输入内容更新到所关联的变量上,

也就是让位两个编辑框控件的变量m_username和m_userpwd获得输入值。

CUserRecordsetm_user:

生成一个CUserRecordset类的实例m_user,用

以操作数据库中定义的表“puser”。

Try{„}Catch{„}:

用以捕获意外,CDBException类的实例来捕获数据用

库中可能出现的错误,e->

表明将错误报告到界面上。

m_user.Close();

判断puser记录集是否打开,如果打

开的话则关闭,以保证后边的操作能正确执行。

anduserpwd='

m_Unam

-10-

e,m_Upwd):

定义查询语言,其对应规则为:

username=m_Unameand

userpwd=m_Upwd”

none):

执行查询

操作。

if(m_user.IsEOF()){„}else{„}:

判断是否已经查询到表的末尾,如果是

的话表明没有符合的用户,用户名或密码错误,否则提示登录成功。

m_user.Close():

操作完后要及时关闭数据库,保证其他操作的正确执行。

):

利用标准信息框,输出警告信

息。

至此验证密码的代码编写完毕。

注意:

要记得UpdateData(TRUE),否则可能得不到输入的数据;

另外要急得

及时关闭数据库,否则后续的打开操作可能无法执行。

编译

选择菜单“Build—RebuildAll”即可编译程序。

我们看到在调试区出现了大堆错

误,因为其中忘了两点重要的内容:

(1)

选择WorkSpace的FileView选项卡,在编辑区打开文件“Demo01

filesFiles.h”,在其中加入下面的内容:

#include<

afxdb.h>

这是与CRecordSet调用相关的头文件声明。

打开文件Demo01filesFilesDlg.cpp”在其中加入下面的“,

内容:

#include"

UserRecordset.h"

这是与CUserRecordset调用相关的头文件声明。

因为在程序中调用了CRecordSet类,又在CDemo01Dlg中调用了CUserRecordset

类,因此必须要作相应的头文件声明。

重新编译,可以看到显示没有错误,编译成功。

单击图中的红色感叹号来运行程序。

此时可以看到我们编辑的用户登录界面,输入用户名和密码,登录,如图16.2.18:

图16.2.18

用户登录界面

至此,整个用户登录系统模块制作完成。

-11-

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

当前位置:首页 > 党团工作 > 思想汇报心得体会

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

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