MFC + Access 用户验证程序(初级数据库编程)
来源:互联网 发布:java mysql怎么改密码 编辑:程序博客网 时间:2024/05/22 08:00
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{// Constructionpublic: 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
// Implementationprotected:
// 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_FILEstatic 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_MAPEND_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_FILEstatic 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;}
- MFC + Access 用户验证程序(初级数据库编程)
- MFC+Access数据库(ADO数据库编程)
- asp中通过access数据库进行用户登录验证
- mfc连接access数据库
- MFC ACCESS连接数据库
- MFC 连接ACCESS 数据库
- MFC连接ACCESS数据库
- MFC连接Access数据库
- MFC+ADO+ACCESS创建数据库
- MFC连接ACCESS数据库心得
- mfc 链接 access 2007 数据库
- 【MFC】ADO数据库操纵access
- ACCESS数据库替换程序
- java+Access( java数据库编程)
- php+access数据库编程
- php+access数据库编程
- 用MFC ODBC操作Access数据库(转)
- 员工请假管理系统(MFC+ACCESS数据库+ODBC数据源)
- 读书与学习
- dlserv部署时发生的问题
- Mssql语句
- Mssql语句
- 巧用脚本为木马“整容”
- MFC + Access 用户验证程序(初级数据库编程)
- 加油
- 你是否想好为什么要换工作了吗?
- 英国研制出可自我复制的机器人
- 了解ups
- 语录笔记
- 对软件行业的认识
- 人生的真谛不在于选择一条好路,在于怎样走好一条烂路!
- BlackICE无法卸载的解决方法