MFC实现登录对话框连接access数据库方式

简介: 编写一个简单的登录对话框 大家好,我们利用MFC编写一个简单的登录对话框。主窗体是单文档界面。程序运行的时候,先弹出一个简单的登录对话框,输入用户名和密码后主窗体显示出来。 1、开打VC++6.0。

编写一个简单的登录对话框

大家好,我们利用MFC编写一个简单的登录对话框。主窗体是单文档界面。程序运行的时候,先弹出一个简单的登录对话框,输入用户名和密码后主窗体显示出来。

1、开打VC++6.0。点击文件,新建,点击工程中的MFC AppWizard(exe),在右边选择工程保存的位置,并且为工程取好名字。

 

2、点击确定后,选择单个文档,你可以一直点击下一步,直到完成,或者在这里直接点击完成即可,完成后界面如下。

 

3、点击工具栏中的“!”号试着编译运行一次,看是否有问题。如果没有问题,我们继续。点击左边的ResourceView,在Dialog上面鼠标右键单击弹出一弹出框,单击Insert Dialog

 

4、在右边新增的对话框中,适当改变窗口大小,加入静态文本框和文本编辑框。

 

5、鼠标右键单击刚才加进去的第一个静态文本框控件,点击属性。在弹出的标题中填写:输入用户名:。然后回车

 

同样在下面的第二个静态文本框的属性标题改为:输入密码:。然后回车。

6、在第一个文本编辑框上右键单击,点击属性,把ID框中的IDC_EDIT1改为容易理解的名字,如:IDC_EDIT_NAME,注意前面的IDC_EDIT最好不要去掉,这样容易见名而知义。同样,对第二个文本编辑框的属性中的IDC_EDIT2改为:IDC_EDIT_PWD

 

 

7、在对话框上的任何空白的地方右键单击,点击建立类向导。

 

然后弹出

 

选择建立Create a new class,点击OK

 

这是为这个对话框创建一个新的类。在Name中,为该对话框类取个名字:CDlg_login。下面的Base class以及Dialog ID不要随便改动。然后点击OK。这样新的类CDlg_login就与本对话框建立起了联系。

 

8、点击OK后,我们并没有退出建立类向导。

 

点击member variables

 

9、左键双击IDC_EDIT_NAME(或者单击后,点击右边的add variables),为IDC_EDIT_NAME增加一个对应在类中的名字:m_login_name。其他地方不要改动。

 

点击OK。同样也对IDC_EDIT_PWD也取一个名字:。

 

10、点击确定。这样我们就建立好了登录对话框以及其对应的类CDlg_login。我们在ClassView里面可以看到我们新加入 类CDlg_login

 

11、我们注意到右边的对话框的标题栏上依然还是Dialog,我们可以在对话框空白的地方单击右键,点击属性,在标题中输入:请登录。其他地方不要改动。

 

12、这个时候如果编译运行的话,该对话框并不会自动弹出来。我们要让程序开始运行的时候自动弹出登录对话框。点击右边的FileView,点击source files,双击MainFrm.cpp。这样在右边就打开了该文件。找到CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct),这是窗体框架创建函数。在该函数的后面(在return 0 ;的前面)加入语句(注意大小写):

CDlg_login dlg;//生成一个登录对话框对象

dlg.DoModal();//让对话框对象以有模式形式显示出来

 

这个时候编译肯定会出错,我们要在MainFrm.cpp文件的前面添加:#include "dlg_login.h"。编译后错误消失。运行结果如下。

 

13、在运行过程中,点击OK后,主窗体会显示出来,我们并没有在用户名以及密码框中输入。下面我们要求输入正确的用户名和密码,主窗体才能显示出来。

14、点击左边的ResourceView,双击Dialog中的IDD_DIALOG1,然后双击右边的OK按钮,

 

要求增加一个成员函数,点击OK即可。我们将在下面的截图所在的void CDlg_login::OnOK()函数中进行编程。

 

15、在void CDlg_login::OnOK()函加入如下代码:

void CDlg_login::OnOK() 

{

// TODO: Add extra validation here

this->UpdateData(true);

if(this->m_login_name=="math" && this->m_login_pwd=="1234")

CDialog::OnOK();

else

MessageBox("登录有误");

}

编译运行即可实现我们的要求了。

 

16、等等,我们发现输入密码的时候是明码,不是星号显示的。我们还要在登录对话框的密码文本编辑框的属性中更改。在登录对话框,右键点击密码文本框,点击属性,点击style,选中password回车即可。

 

17、本程序还有很多弊端,比如,关闭登录对话框也可以进行主窗体,点击cancel也可以进入,用户名和密码不能更改,这要求和数据库联系起来。大家可以思考一下,怎么该进。全文完毕。


18、现在连接数据库。先利用access建立数据库,名字为book_db,并建好一个管理员表book_admin

 

19、为book_db建立数据源,打开控制面板,点击管理工具,点击打开数据源,添加系统dsn

 

点击右边的添加,选择Microsoft Access Driver(*.mdb),给数据源取个名字比如:book_db_dsn,

然后点击选择,选中刚才建立的book_db保存的位置,选中好该数据库,点击确定即可。

 

 

最后点击确定完成了数据源的建立。

 

20、在MFC中建立ADO数据库连接

stdafx.h文件中添加对ado的支持:

#import "C:\Program Files\Common Files\System\ado\msado15.dll"  no_namespace rename("EOF","adoEOF")

//#include<icrsint.h>  (可选,可不用添加此头文件)

 

CDlg_login.h头文件中添加:

_ConnectionPtr  m_pConnection;

_RecordsetPtr m_pRecordset;

 

21、连接数据源,在OnOk函数中输入如下:

void CDlg_login::OnOK() 

{

// TODO: Add extra validation here

this->UpdateData(true);

::CoInitialize(NULL);

this->m_pConnection.CreateInstance(__uuidof(Connection));

this->m_pRecordset.CreateInstance(__uuidof(Recordset));

this->m_pConnection->Open("DSN=book_db_dsn","","",0);//上面四行为打开数据源连接

CString str;

str.Format("select * from book_admin where admin_name='%s' and admin_pwd='%s'",this->m_login_name,this->m_login_pwd);

BSTR bstrSQL=str.AllocSysString();

this->m_pRecordset->Open(bstrSQL,(IDispatch*)this->m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);

if(!this->m_pRecordset->adoEOF)

CDialog::OnOK();

else

MessageBox("Failed");

this->m_pRecordset->Close();

this->m_pConnection->Close();

}

 

至此ADO数据源连接完毕。

技术改变世界! --狂诗绝剑
目录
相关文章
|
9月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
419 13
|
9月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
1782 11
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
2595 28
|
11月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
775 0
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
859 14
|
9月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
560 158
|
9月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1458 152

热门文章

最新文章