日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時間:2025/3/15 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC + Access 用户验证程序(初级数据库编程) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MFC + Access 用戶驗證程序(初級數(shù)據(jù)庫編程)

轉(zhuǎn)自:企業(yè)即時通訊

軟件流程: 彈出對話框,要求輸入用戶及密碼,正確則跳到主對話框,錯誤則要求重新輸入,關(guān)閉則什么也不做退出。 三無程序,有用的或剛學(xué)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; }

總結(jié)

以上是生活随笔為你收集整理的MFC + Access 用户验证程序(初级数据库编程)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。