MFC实现登录对话框连接access数据库方式
编写一个简单的登录对话框
大家好,我们利用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数据源连接完毕。
MFC实现登录对话框连接access数据库方式的更多相关文章
- Java 连接 Access数据库方式
import <a href="http://lib.csdn.net/base/java" class='replace_word' title="Java 知识 ...
- Java Web项目中连接Access数据库的配置方法
本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...
- 【.net 深呼吸】连接Access数据库应注意的几点
本地数据库可以有Y种选择,比如Sqlite.SQL Server Express.SQL Local DB.SQL Server CE.Access等,本文老周选用比较著名的Access本地数据库,在 ...
- C#连接Access数据库(详解)
做一个用VS2012的C#连接Access数据库的备忘, SQL数据库固然强大,有大微软的强力技术支持,LINQ的方便操作,但是如果写一个小程序对数据库方面没有什么大的要求的话,将来在数据库方面就可以 ...
- ASP.net分别连接SQLserver数据库与连接Access数据库精英版
-------------------------连接access2003 字符串------------------------- Provider=Microsoft.Jet.OLEDB.4.0; ...
- php连接Access数据库错误及解决方法
<?php $connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data.m ...
- php连接Access数据库的三种方法
http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2009/1115/3524.html 虽然不是一个类但先放这儿吧 最近想把一个asp的网站改成 ...
- 具体解释VB中连接access数据库的几种方法
在VB中,连接ACCESS数据库的方法主要有以下三种 使用ADO对象,通过编写代码訪问数据库 Connection 对象 ODBC数据源 使用ADO Data 控件高速创建数据库连接 有三种连接方法 ...
- JSP连接access数据库
一个用jsp连接Access数据库的代码. 要正确的使用这段代码,你需要首先在Access数据库里创建一username表,表里面创建两个字符型的字段,字段名分别为:uid,pwd,然后插入几条测试数 ...
随机推荐
- python 学习 设计模式(goF设计模式)
一 单例模式 用来创建单个实例 #/usr/bin/env python3 # -*- coding:utf-8 -*- # Author: ZSHAOX class Foo: instance = ...
- 101个linq例子
FirstOrDefault - Simple public void Linq61() { int[] numbers = { }; int firstNumOrDefault = numbers. ...
- yii2.0单文件上传和多文件上传
yii2文件上传使用到yii2自带的文件上传类UploadFIle,以及对应的模型规则,这里分别介绍单文件上传和多文件上传: yii2单个文件上传: 上传步奏,先创建上传表单模型model(包含验证规 ...
- 向量空间(Vector Spaces)
向量空间(Vector Spaces) 向量空间又称线性空间,是线性代数的中心内容和基本概念之一.在解析几何里引入向量的概念后,是许多问题的处理变得更为简洁和清晰,在此基础上的进一步抽象化,形成了与域 ...
- Linux修改SSH端口和禁止Root远程登陆
Linux修改ssh端口22 vi /etc/ssh/ssh_config vi /etc/ssh/sshd_config 然后修改为port 8888 以root身份service sshd res ...
- OC 调用JS 代码 处理HTML5 实战
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; ...
- EventBus消息机制在Eclipse环境下的使用
1.在onStart()方法中注册 @Override public void onStart() { super.onStart(); // 注册 EventBus // 判断 Eventbus 是 ...
- HDU - 2290 Find the Path(最短路)
HDU - 2290 Find the Path Time Limit: 5000MS Memory Limit: 64768KB 64bit IO Format: %I64d & % ...
- Items divided
Items divided 题目链接:http://acm.xidian.edu.cn/problem.php?id=1183 参考:http://www.cnblogs.com/wanghetao/ ...
- 弹性布局EM的计算方法
文章来源: http://www.w3cplus.com/css/px-to-em 总结: 1.浏览器默认的字体大小为16PX,即1em 2.EM可以指定小数点的后三位 3.元素自身没有设置字体大小, ...