现在的位置: 首页 > 综合 > 正文

这两天在学向VC中嵌入ACCESS,从网上搜到了一片登陆界面的文章,挺实用

2013年10月23日 ⁄ 综合 ⁄ 共 3129字 ⁄ 字号 评论关闭

 

基于Access数据库的vc登录框设计(转自百度博客http://hi.baidu.com/shentuhongfeng/blog/item/7464328b9d7a4719c8fc7a88.html#lastcmt
2010-03-14 22:49

必要条件:机子上安装Microsoft Access数据库,VC6.0

第一步:打开VC6.0,新建基于对话框的工程,工程名“LoginTest”,OK,完成程序导向。你将会看到工程的主对话框。当然也许你会认为,我会把这个做为登录框来用。这种想法是很愚蠢的,虽然你也可以这么用。为什么这样说呢?你就需要搞清什么是程序的主对话框。程序的主对话框-----从表面现象来看,就是程序运行时看到的第一个对话框。从本质来说,即是主线程成员m_pMainWnd指针所指的对话框。所以判断到底哪个是主对话框,在应用程序类的InitInstance()方法中找到m_pMainWnd,看它所指的到底是哪个对话框。
也许,以前你不会认为QQ登录框才是程序的主对话,但它的确是。或许,你又要质疑,为什么不用程序向导生成的对话框当做登录框来用?如果你真这样用了,我只能说明你是死脑筋。为什么呢,当你起一个工程名字时,工程名会反应到向导生成的对话框类中。当你看到这个名字时,你大概就会明白这个程序的主导相思,鬼才会把它同登录框联系在一起,至少门面也要有个像样的名字,所以向导生成的对话框,我们把它做为门面用,但它绝不是程序的主对话框。可是向导生成的主对话框就是它呀。m_pMainWnd指的是它,所以我们要新建一个登录对话框,让m_pMainWnd指向它。

第二步: 把新建对话框的ID改成 :IDD_DIALOG_LOGIN。名字:“登录对话框”。
在登录框中,加上两个文本框控件,两个编程框,一个按钮。
文本框一名字设置:“用户名:”
文本框二名字设置:“密码:”
编辑框一ID设置:IDC_EDIT_USER 关联字符串:m_csUser
编辑框二ID设置:IDC_EDIT_PSW 关联字符串:m_csPsw  
属性样式:Password勾上。
按钮名字:“登录” ID: IDC_BUTTON_LOGIN
双击对话框,新建一个与此对话框关联的新类,类名:CLogin
(到此我们已经把对话框界面设计好了,就此打住。然后我们来建一个Access数据库。)

第三步:我的电脑---打开工程目录,右击新建Microsoft Access数据库。将数据库名字命名为user.mdb。打开数据库,你会看到表设计器,双击打开,建立两个字段,第一个字段名:USER_NAME,文本类型;第二字段名:USER_PASSWORD,文本类型。设置第一个字段为主键。按保存,填上表名:UserPsw。

(这一步主要是建立一个数据库表,其中有两个字段--用户名---密码,这个表主要就是来存储每个用户名字和密码,相信你已经知道qq里面每个人的信息存储在哪里了吧)

第四步:建立好数据库以后,这个数据库并不能直接用到程序里。首先要明白程序通过什么访问数据库的。建立好数据库,这个数据库就象仓库一样是个死物,如果没有管理,没有驱动,外部程序就无法识别与访问。这样比喻一下吧,假设这是一个粮库,里面有不同的植物,粮库门前站着一个仓管,当我去取粮食时,我需要和仓管对话,我需要什么植物粮食,他就会从仓库中取出给我。这样我就可以访问粮库了。同理,在计算机中数据库就相当粮库,我就相当于访问数据库的程序,那么谁来充当仓管呢。答案就是时常搞的我们头晕的数据源(数据库驱动),而同一个数据库驱动应用于同一类数据库,所以我们要有个名字来区分它,这就数据源名。还是刚才的比喻,所有仓管都可以做为粮库的驱动,但是我访问那个粮库的仓管却是唯一的,他的名字就是数据源名。

好了,知道什么是数据源和数据源名了,我们就来为我们的数据库设置数据源及数据源名。

打开控制面板——管理工具----数据源(ODBC)-----打开数据源管理器。在驱动程序选项中选择Microsoft提拱的Access数据库驱动。然后在用户数据源下,双击Access驱动,在ODBC中添上数据源名“user",接着点击选择用户数据库,找到本工程目标下找到我们建的user.mdb数据库。确定,确定。本程序用到数据源及数据源名就设置好了。

(下边才涉及到具体的编程)

第五步:回到我们的工程,在类视图下,右建,新建类,类名:CLoginSet。选择基类CRecordSet(记录集类,关联数据库表的),点确定,会弹出对话框,填上user数据源名,点确定,会让你让选择数据库表,定位到本工程的数据库,选择UserPsw数据库表。OK

这样记录集CLoginSet就关键上我们的UserPsw表了。

第六步:(1)打开stdAfx.h文件。添加头文件#include "afxdb.h"//封装ODBC访问数据库类与方法的库。
(2) 在CTestApp的InitInstance方法中。


CLogin dlg;
m_pMainWnd = &dlg;
替换原来的
CLoginTestDlg dlg;
m_pMainWnd= &dlg;

目的,设置登录框为主对话框。注意在LoginTest.cpp中把包括的#include "LoginTestDlg.h" 替换成#include "Login.h"

第七步:

在Login类中声明CDatabase m_database变量。
在Login类的OnInitDialog方法中添加如下代码打开数据库

//打开数据库
if(!m_database.Open(_T("user")))
{
AfxMessageBox(_T("数据库打开失败!"));
return FALSE;
}

打开资源视图,找到登录框。双击登录按钮,为其添加单击消息处理函数。具体代码如下编写。

//登录
void CLogin::OnButtonLogin()  
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);//将编辑框内容写入变量中

CString sql=_T("");//
CLoginSet m_recordset(&m_database);//关联数据库
  
sql.Format(_T("select * from UserPsw where USER_NAME='%s'and USER_PASSWORD='%s'"),m_csUser,m_csPsw);

m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,sql);//打开记录集,表视图

if(m_recordset.GetRecordCount()==0)
{
AfxMessageBox(_T("用户名或密码不正确!"));
}
else
{
CDialog::OnOK();
CLoginTestDlg dlg;
dlg.DoModal();
}

  
}

在Login.cpp中添加如下头文件
#include "LoginTestDlg.h"

到此程序结束。就可以运行了

总结:

在处理按钮消息中。
sql.Format(_T("select * from UserPsw where USER_NAME='%s'and USER_PASSWORD='%s'"),m_csUser,m_csPsw);  
目的是在数据表中搜索用户名,密码,是否等于编辑框中的用户名,密码。
if(m_recordset.GetRecordCount()==0)
如果没有找到,就弹出一个消息框,提示输入错误,返回。
否则就创建CLoginTestDlg对话框。

好了,整个过程就这样,如果不妥之处还请指点。

抱歉!评论已关闭.