MFC + Access 用户验证程序(初级数据库编程)

【MFC学习笔记】MFC 操作Access数据库 显示在List Control 文章目录建立Access数据库建立MFC对话框窗体为IDC_BOOK_LIST添加变量设置IDC_BOOK_LIST格式建立ADO数据库连接 建立Access数据库 在Access中建立数据库如下图 保存为2002-2003数据库格式(.mdb后缀) 要在一个MFC对话框窗体中,用List Control控件将数据表library的数据读取并显示 建立MFC对话框窗体 建立一个对话框项目ex3 ... 阅读详情

MFC + Access 用户验证程序(初级数据库编程)

转自:企业即时通讯

软件流程: 弹出对话框,要求输入用户及密码,正确则跳到主对话框,错误则要求重新输入,关闭则什么也不做退出。 三无程序,有用的或刚学ADO的看看。

 

////////////////////////////////////////// stdafx.h

// stdafx.h : include file for standard system include files, //  or project specific include files that are used frequently, but //      are changed infrequently //

#if !defined(AFX_STDAFX_H__B170E8A6_57B5_4B19_A471_C368C30871F1__INCLUDED_) #define AFX_STDAFX_H__B170E8A6_57B5_4B19_A471_C368C30871F1__INCLUDED_

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000

#define VC_EXTRALEAN  // Exclude rarely-used stuff from Windows headers

#include <afxwin.h>         // MFC core and standard components #include <afxext.h>         // MFC extensions #include <afxdisp.h>        // MFC Automation classes #include <afxdtctl.h>  // MFC support for Internet Explorer 4 Common Controls #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h>   // MFC support for Windows Common Controls #endif // _AFX_NO_AFXCMN_SUPPORT

#include <icrsint.h> #import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")

//{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__B170E8A6_57B5_4B19_A471_C368C30871F1__INCLUDED_) ---------------------------------------------------------------------------------------------------------------------------------------------------

#if !defined(AFX_LOGINDLG_H__C757DD49_652B_41A1_84C3_EC0D3C40A07F__INCLUDED_) #define AFX_LOGINDLG_H__C757DD49_652B_41A1_84C3_EC0D3C40A07F__INCLUDED_

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // LoginDlg.h : header file //

///////////////////////////////////////////////////////////////////////////// // CLoginDlg dialog

class CLoginDlg : public CDialog { // Construction public:  BOOL UserValid();  CLoginDlg(CWnd* pParent = NULL);   // standard constructor

// Dialog Data  //{{AFX_DATA(CLoginDlg)  enum { IDD = IDD_DIALOG1 };   // NOTE: the ClassWizard will add data members here  //}}AFX_DATA

// Overrides  // ClassWizard generated virtual function overrides  //{{AFX_VIRTUAL(CLoginDlg)  protected:  virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support  //}}AFX_VIRTUAL

// Implementation protected:

 // Generated message map functions  //{{AFX_MSG(CLoginDlg)  virtual void OnOK();  virtual void OnCancel();  virtual BOOL OnInitDialog();  //}}AFX_MSG  DECLARE_MESSAGE_MAP() };

//{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_LOGINDLG_H__C757DD49_652B_41A1_84C3_EC0D3C40A07F__INCLUDED_)

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

// LoginDlg.cpp : implementation file //

#include "stdafx.h" #include "userlogin.h" #include "LoginDlg.h" #include "userloginDlg.h"

#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif

///////////////////////////////////////////////////////////////////////////// // CLoginDlg dialog

CLoginDlg::CLoginDlg(CWnd* pParent /*=NULL*/)  : CDialog(CLoginDlg::IDD, pParent) {  //{{AFX_DATA_INIT(CLoginDlg)   // NOTE: the ClassWizard will add member initialization here  //}}AFX_DATA_INIT }

void CLoginDlg::DoDataExchange(CDataExchange* pDX) {  CDialog::DoDataExchange(pDX);  //{{AFX_DATA_MAP(CLoginDlg)   // NOTE: the ClassWizard will add DDX and DDV calls here  //}}AFX_DATA_MAP }

BEGIN_MESSAGE_MAP(CLoginDlg, CDialog)  //{{AFX_MSG_MAP(CLoginDlg)  //}}AFX_MSG_MAP END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////// // CLoginDlg message handlers

void CLoginDlg::OnOK() {  // TODO: Add extra validation here /* char *szBuf = new char[128];  GetDlgItemText(IDC_EDIT1, szBuf, 128);  MessageBox(szBuf);*/  if (! UserValid())   return;

 CDialog::OnOK(); }

void CLoginDlg::OnCancel() {  // TODO: Add extra cleanup here

 CDialog::OnCancel(); }

BOOL CLoginDlg::UserValid() {  _ConnectionPtr &cPtr = ((CUserloginDlg*)GetParent())->m_pConn;  char* szUserName = (char*)((CUserloginDlg*)GetParent())->m_szUserName;

 _RecordsetPtr pRs;  pRs.CreateInstance(__uuidof(Recordset));

 // 确保用户名输入不为空  char szName[128];  GetDlgItemText(IDC_EDIT1, szName, 128);  if (NULL == szName[0])  {   AfxMessageBox("用户名不能为空!");   return FALSE;  }  char szpw[128];  GetDlgItemText(IDC_EDIT2, szpw, 128);  if (NULL == szpw[0])  {   AfxMessageBox("密码不能为空!");   return FALSE;  }

 // 从 account 表里读出用户信息  char szSQL[256];  sprintf(szSQL, "%s%s", "SELECT * FROM account where username='", szName);  strcat(szSQL, "'");

 try  {   HRESULT hr = pRs->Open(szSQL,    cPtr.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);

  // 确保用户存在   if (pRs->adoEOF)   {    AfxMessageBox("用户名无效,请重新输入!");    pRs->Close();    pRs.Release();    return FALSE;   }  }

 catch (_com_error e)  {   AfxMessageBox(e.ErrorMessage());  }

 CString l_str;  variant_t var;

 try  {   var = pRs->GetCollect(_variant_t("password"));   if (var.vt != VT_NULL)   {    l_str = (LPCTSTR)_bstr_t(var);    if (l_str == szpw)    {    // AfxMessageBox("密码正确");     strcpy(szUserName, szName);    }    else    {     AfxMessageBox("密码错误,请重新输入!");     return FALSE;    }   }   else   {    l_str = _T("none");    AfxMessageBox(l_str);    return FALSE;   }  }  catch (_com_error e)  {   AfxMessageBox(e.Description());  }  pRs->Close();  pRs.Release(); }

BOOL CLoginDlg::OnInitDialog() {  CDialog::OnInitDialog();    // TODO: Add extra initialization here  return TRUE;  // return TRUE unless you set the focus to a control                // EXCEPTION: OCX Property Pages should return FALSE }

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

// userlogin.h : main header file for the USERLOGIN application //

#if !defined(AFX_USERLOGIN_H__433A5C98_5C19_49A2_8ACA_5AD5FF116D77__INCLUDED_) #define AFX_USERLOGIN_H__433A5C98_5C19_49A2_8ACA_5AD5FF116D77__INCLUDED_

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__  #error include 'stdafx.h' before including this file for PCH #endif

#include "resource.h"  // main symbols

///////////////////////////////////////////////////////////////////////////// // CUserloginApp: // See userlogin.cpp for the implementation of this class //

class CUserloginApp : public CWinApp { public:  CUserloginApp();

// Overrides  // ClassWizard generated virtual function overrides  //{{AFX_VIRTUAL(CUserloginApp)  public:  virtual BOOL InitInstance();  //}}AFX_VIRTUAL

// Implementation

 //{{AFX_MSG(CUserloginApp)   // NOTE - the ClassWizard will add and remove member functions here.   //    DO NOT EDIT what you see in these blocks of generated code !  //}}AFX_MSG  DECLARE_MESSAGE_MAP() };

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_USERLOGIN_H__433A5C98_5C19_49A2_8ACA_5AD5FF116D77__INCLUDED_) ----------------------------------------------------------------------------------------------------------------------------------------------

// userlogin.cpp : Defines the class behaviors for the application. //

#include "stdafx.h" #include "userlogin.h" #include "userloginDlg.h"

#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif

///////////////////////////////////////////////////////////////////////////// // CUserloginApp

BEGIN_MESSAGE_MAP(CUserloginApp, CWinApp)  //{{AFX_MSG_MAP(CUserloginApp)   // NOTE - the ClassWizard will add and remove mapping macros here.   //    DO NOT EDIT what you see in these blocks of generated code!  //}}AFX_MSG  ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////// // CUserloginApp construction

CUserloginApp::CUserloginApp() {  // TODO: add construction code here,  // Place all significant initialization in InitInstance }

///////////////////////////////////////////////////////////////////////////// // The one and only CUserloginApp object

CUserloginApp theApp;

///////////////////////////////////////////////////////////////////////////// // CUserloginApp initialization

BOOL CUserloginApp::InitInstance() {  OleInitialize(NULL);  AfxEnableControlContainer();

 // Standard initialization  // If you are not using these features and wish to reduce the size  //  of your final executable, you should remove from the following  //  the specific initialization routines you do not need.

#ifdef _AFXDLL  Enable3dControls();   // Call this when using MFC in a shared DLL #else  Enable3dControlsStatic(); // Call this when linking to MFC statically #endif

 CUserloginDlg dlg;  m_pMainWnd = &dlg;  int nResponse = dlg.DoModal();  if (nResponse == IDOK)  {   // TODO: Place code here to handle when the dialog is   //  dismissed with OK  }  else if (nResponse == IDCANCEL)  {   // TODO: Place code here to handle when the dialog is   //  dismissed with Cancel  }

 // Since the dialog has been closed, return FALSE so that we exit the  //  application, rather than start the application's message pump.  return FALSE; }

第一次在VS2010下MFC采用ADO方式连接ACCESS数据库(详细过程) 第一步:首先建立基于对话框的MFC应用程序Library,然后添加一个用户登录界面如图: 并建立此对话框的类LoginDlg ,在类中新建两个变量CString m_strName; CString m_strPassword;并完善相应的构造函数和DoDataExchange 部分代码如下: LoginDlg::LoginDlg(CWnd* pParent /*=NULL*/) : 阅读详情

相关推荐

MFC数据库编程救急方案(小白向)

本文章主要写的是MFC数据库编程,并应用的是ODBC的数据访问方法,旨在最方便的建立起一个基本的链接好数据库的程序框架,并讲一讲怎么访问数据库。 之所以是小白向,因为小编也是小白~~ *小编使用的是VS2010和Access2007 相近环境肯定都可以 图片较多,如果不清晰可以右键打开看看1、建立自己的文件数据库~~首先做MFC数据库编程你需要有一个自己的数据库,抛开大神常用的MySQL or

SheldonMao的博客 1495

windows应用(vc++2022)MFC基础到实战(2)-基础(2)

您还可以定义初始化和验证对话框的控件的方式。为了更好地帮助你,Microsoft 基础类库提供了一个名为 COMMON.RES 的文件,它包含你可从 COMMON.RES 复制并粘贴到自己的资源文件中的“剪贴画”资源。有关使用类视图的详细信息以及向项目添加代码的向导的详细信息,请参阅使用代码向导添加功能。有关使用类视图的详细信息以及向项目添加代码的向导的详细信息,请参阅使用代码向导添加功能。使用“类视图”中“属性”窗口中的“事件”按钮(或类向导中的“命令”选项卡)将菜单和快捷键连接到代码中的处理程序函数。

The research on computer technolog 2710

MFC连接ACCESS数据库练习

数据库连接字符串

HelloWorld_2021的博客 582

MFC发送POST请求带账号密码验证

方法一: DWORD dwServiceType = AFX_INET_SERVICE_HTTP ; CString strServer = L""; INTERNET_PORT wPort ; CString strObject = L""; BOOL bRes = false; if (!AfxParseURL(strUrl, dwServiceType, strServer, strObject, wPort)) { return bRes; } CInternetS

weixin_44747201的博客 827

vs2008 MFC访问Access 2010数据库

MSDN给出了各种语言访问Access 2010的详细介绍:点击打开链接。下图列出了各种语言访问Access 2010的接口。 我在VS2008下使用MFC下的ODBC相关接口访问Access 2010数据库。 Demo中使用MFC访问数据库accsess2010数据库AccessDemo.accdb下有student表,表中有用户编号、电话号码、姓名、省份四列信息,表中有包含这四列信

yearafteryear的专栏 1万+

MFC框架下ACCESS数据库开发实战详解

MFC(Microsoft Foundation Classes)是基于C++语言封装的一套类库,广泛用于Windows桌面应用程序开发。在MFC中,数据库开发是其重要功能之一,尤其适用于需要与小型数据库(如ACCESS)进行交互的中小型管理系统开发。MFC通过封装ODBC(Open Database Connectivity)和DAO(Data Access Object)等数据库访问技术,为开发者提供了便捷的数据库编程接口。

weixin_35592186的博客 1248

c++/MFC CSocket仿QQ聊天软件,实现1对1聊天,群聊

学习,c++有2个星期了。本来,本人是做php出身的。做php快2年了,最近身边多了很多高手。让自己对c开始感兴趣了,就开始学习c++了。首先接触的就是mfc。前几天,看到了一个博文,是有关,mfc网络编程的。可对方,的实例只能是多对多,出于兴趣,自己改写了下它的程序,实现了点对点的聊天。所以,本实例并非纯原创的。这个还请大家见谅,尤其是作者。我在他程序基础上,增加了1对1的聊天,同时还保留了群聊

蜗牛的精神 2万+

MFC应用中操作Access数据库的实战指南

MFC数据库接口类是一组封装好的组件,允许开发者在Microsoft Foundation Classes(MFC)应用程序中轻松进行数据库操作。这些接口为访问和管理数据提供了便利,特别是在使用SQL Server, Access或其他数据库系统时。ADO技术,即ActiveX Data Objects,是一种允许在应用程序中访问数据库的编程接口。它提供了一组轻量级对象模型,这些模型以自动化的方式封装了对数据库的操作,大大简化了数据库编程的复杂性。

weixin_35751194的博客 1053

MFC简单的登录注册实现

注册Void CSignDlg::OnSubmit() { CString username;//从文件中读取用户名进行校验,如果输入的用户名在文件已存在则不进行注册 CString sex; bool flag=false;//标记 char * path="username.txt";//文件路径 CFile fp;//使用MFC的CFile将暑假写入文件

Rankir的博客 1万+

MFC与ACCESS图书管理系统详解

本文还有配套的精品资源,点击获取 简介:图书管理系统是一种信息化解决方案,本教程深入讲解了一个基于MFC框架和ACCESS数据库开发的系统。MFC为Windows应用程序开发提供了一套完整的面向对象编程环境,简化了用户界面和事件处理的开发。ACCESS数据库为系统提供数据存储和处理功能,使得图书信息管理、查询、借阅和报表生成等操作变得高效。通过ODBC或DAO技术实现MFC...

weixin_28931507的博客 1127

vc MFC 做的用户登录界面 访问access数据库的实例

根据查询数据库中的结果来决定用户能否登录 ,有该用户则可以登录 没有则不行。

[转]MFC学习总结(二)

21. 介绍函数过程中一种任意键退出同时能处理消息的实现方法1. 设置定时器,用于使::GetMessage(...)函数总能快速取到消息.2. 在函数处理中加入:函数每执行完一步后执行下面的代码.if (::GetMessage(&msg, 0, 0, 0)){  if (msg.message >= WM_KEYFIRST && msg.message   ::TranslateMessage

blueblood_jing的专栏 869

用户登录验证程序的实现 汇编

微机接口的实验代码 密码键入时回显*,用户名和密码都相同时显示欢迎界面

MFC连ACCESS的相关操作(我的MFC做法)

授人以鱼不如授人以渔, 这篇文章主要会讲述我的MFC中几个地方做法,并不会将所有代码列出来(如有需要,可在资源下载)。   // 我用的是VC6.0 首先 建立一个MFC文件,然后建立ACCESS文件,并将两者连接起来   点击OK,在下一个界面选中第一个  单文档,然后FINISH就建立出来自己的单文档了。 建立一个ACCESS,取名然后点击进入

继续激情,继续奋斗。 5212

VC,MFC做的图书管理系统,有点问题,大家帮忙看一下吧,谢谢了

请大神修改一下错误,里面有个txt文件写出了错误的问题,MFC做的图书管理系统

MFC+access学籍信息管理系统

简单的MFC+ACCESS数据库的学生信息管理系统,使用时需要只需要创建ODBC数据源即可

MFC+Access数据库(ADO数据库编程)

最近项目需要使用到数据库,项目本身使用的是MFC。于是选择了简单的Access数据,本文将介绍本人如何在MFC使用的Access数据库。顺带提一句,本文使用的系统为win8.1,64位,编译环境为VS2010和office2010,如出现连接问题,可以看看Access的位数与系统位数是否一致。 本文是在ADO(Microsoft Active Data Objects)接口下对数据库进行操作的。

尽人事,听天命 7694

学生成绩管理系统V2.5(MFC+Access版) vs2008

序主框架采用单文档SDI,切分窗口技术,数据库采用ADO技术,开发环境是基于 vs2008 +Access数据库。系统具有学生信息管理,学生成绩管理,课程信息管理等功能,并且能对记录信息进行添加、删除、查询、统计等功能。 V2.5主要修正了 2.0版中查询模块的bug。

上一篇: 给恋爱中的女孩的忠告
下一篇: 中文名称:案例编程MOOK系列
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值