飞机大战笔记(Access数据库的使用)

//////////////////2015/07/22///////////////////

/////////////////by xbw /////////////////////////

////////////////环境 VS2013/////////////////

为了登陆界面的注册用的数据库鼓捣的一天了,必须得写篇文章发泄一下了,

昨天发表的文章还是存在一点bug的,不足之处很容易就看出来了,这样的,今天有修改了一下,是大改哦

int first = 1;while (!Dbset.IsEOF())// 有没有到表结尾{Dbset.GetFieldValue(_T("Name"), var);Sname = (LPCSTR)var.pbstrVal;Dbset.GetFieldValue(_T("Psw"), var);Spsw = (LPCSTR)var.pbstrVal;Dbset.GetFieldValue(_T("Score"), var);Sscore = (LPCSTR)var.pbstrVal;if (Sname.Compare(m_logname) == 0 && Spsw.Compare(m_logpsw) == 0)//如果密码和账户与数据库一致{MessageBox(_T("登入成功!"), _T("温情提示"));CDialog::OnOK();first = 0;break;}else{Dbset.MoveNext();}}if (first){MessageBox(_T("用户或密码错误!"), _T("温情提示"));}

这就是修改的地方,资料查了半天,才知道MFC调用数据库有这么多方法,这个呢是适合我的,

因为我的定义是

CDaoDatabase db; //数据库

CDaoRecordset RecSet(&db); //记录集

头文件 #include "afxdao.h"

唉,不多说了,直接上完整代码,贴出来好心疼,大家互相交流学习吧,,,,,,

// loading.cpp : 实现文件//#include "stdafx.h"#include "PlaneGame.h"#include "loading.h"#include "afxdialogex.h"#include "afxdao.h"#include "zhuce.h"// loading 对话框IMPLEMENT_DYNAMIC(loading, CDialogEx)CDaoDatabase db;//数据库CDaoRecordset RecSet(&db);//记录集loading::loading(CWnd* pParent /*=NULL*/): CDialogEx(loading::IDD, pParent), open(false), open1(false), m_logname(_T("")), m_logpsw(_T("")){CString Filepath = _T("Database.mdb");CDaoRecordset Dbset(&db);CFileFind Ffind;BOOL flag = Ffind.FindFile(Filepath);Ffind.Close();if (!flag){CString sqlcmd = _T("CREATE TABLE DataTable(Name VARCHAR(20),Psw VARCHAR(20),Score VARCHAR(20))");db.Create(Filepath);db.Execute(sqlcmd);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE, _T("SELECT * FROM DataTable", 0));Dbset.AddNew();Dbset.SetFieldValue(_T("Name"), _variant_t(_T("plucky")));Dbset.SetFieldValue(_T("Psw"), _variant_t(_T("MFC_py")));//设置初始用户名和密码Dbset.SetFieldValue(_T("Score"), _variant_t(_T("0")));Dbset.Update();Dbset.Close();db.Close();}//这样就创建好了数据库文件,而且设置了初始化账号}loading::~loading(){}void loading::DoDataExchange(CDataExchange* pDX){DDX_Text(pDX, IDC_EDIT3, m_logname);DDX_Text(pDX, IDC_EDIT4, m_logpsw);}BEGIN_MESSAGE_MAP(loading, CDialogEx)ON_WM_NCHITTEST()ON_WM_CTLCOLOR()ON_BN_CLICKED(IDCANCEL, &loading::OnBnClickedCancel)ON_BN_CLICKED(IDOK, &loading::OnBnClickedOk)ON_BN_CLICKED(IDOK2, &loading::OnBnClickedOk2)ON_NOTIFY(NM_CLICK, IDC_SYSLINK1, &loading::OnNMClickSyslink1)ON_NOTIFY(NM_CLICK, IDC_SYSLINK2, &loading::OnNMClickSyslink2)END_MESSAGE_MAP()// loading 消息处理程序//鼠标拖动窗口移动//CDaoDatabase db;//数据库//CDaoRecordset RecSet(&db);//记录集LRESULT loading::OnNcHitTest(CPoint point){// TODO: 在此添加消息处理程序代码和/或调用默认值ScreenToClient(&point);CRect rc;GetClientRect(&rc);if (rc.PtInRect(point)){return HTCAPTION;}else{return CDialogEx::OnNcHitTest(point);}}HBRUSH loading::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){//HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);//CFont font;//font.CreatePointFont(200, _T("宋体"), NULL);//GetDlgItem(IDC_STATIC)->SetFont(&font);// TODO: 在此更改 DC 的任何特性//在OnInitDialog()函数中添加:// TODO: 在此添加额外的初始化代if (nCtlColor == CTLCOLOR_STATIC){pDC->SetTextColor(RGB(200, 100, 50));pDC->SetBkMode(RGB(200, 100, 50)); //设置背景透明return HBRUSH(GetStockObject(HOLLOW_BRUSH));}// TODO: 如果默认的不是所需画笔,则返回另一个画笔//return hbr;return 0;}void loading::OnBnClickedCancel(){// TODO: 在此添加控件通知处理程序代码open = FALSE;CDialogEx::OnCancel();}void loading::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码//CString Filepath = _T("Database.mdb");//CDaoRecordset Dbset(&db);//CFileFind Ffind;//BOOL flag = Ffind.FindFile(Filepath);//Ffind.Close();/*if (!flag){CString sqlcmd = _T("CREATE TABLE DataTable(Name VARCHAR(20),Psw VARCHAR(20),Score VARCHAR(20))");db.Create(Filepath);db.Execute(sqlcmd);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE, _T("SELECT * FROM DataTable", 0));Dbset.AddNew();Dbset.SetFieldValue(_T("Name"), _variant_t(_T("plucky")));Dbset.SetFieldValue(_T("Psw"), _variant_t(_T("MFC_py")));//设置初始用户名和密码Dbset.SetFieldValue(_T("Score"), _variant_t(_T("0")));Dbset.Update();Dbset.Close();db.Close();}//这样就创建好了数据库文件,而且设置了初始化账号*//*CString sPath;GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);sPath.ReleaseBuffer();int nPos;nPos = sPath.ReverseFind('\\');sPath = sPath.Left(nPos);CString strFile = sPath + _T("\\Database.mdb");db.Open(strFile);// 打开已创建的demo数据库及DemoTable表RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE, _T("SELECT* FROM DataTable"), NULL);*///UpdateData(TRUE);//CString m_tablefield, m_searchSQL;//if (m_sfield.Compare("姓名") == 0)//{//m_tablefield.Format("Name");//}/*UpdateData(true);CDaoRecordset Dbset(&db);CString Filepath =_T( "Database.mdb");CString Sname, Spsw,Sscore;_variant_t varname, varpsw,varscore;db.Open(Filepath);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE, _T("SELECT * FROM DataTable"), 0);varname = Dbset.GetFieldValue(_T("Name"));varpsw = Dbset.GetFieldValue(_T("Psw"));varscore = Dbset.GetFieldValue(_T("Score"));Sname = (LPCSTR)_bstr_t(varname);Spsw = (LPCSTR)_bstr_t(varpsw);Sscore = (LPCSTR)_bstr_t(varscore);Dbset.Close();db.Close();if (Sname.Compare(m_logname)==0&&Spsw.Compare(m_logpsw) == 0)//如果密码和账户与数据库一致{MessageBox(_T("登入成功!"), _T("温情提示"));CDialog::OnOK();}else{MessageBox(_T("用户或密码错误!"), _T("温情提示"));return;}*/UpdateData(true);COleVariant var;// 字段类型var.ChangeType(VT_BSTR, NULL);//CString strName, strAge, strFile;CString Sname, Spsw, Sscore;CDaoRecordset Dbset(&db);CString Filepath = _T("Database.mdb");db.Open(Filepath);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE, _T("SELECT * FROM DataTable"), 0);int first = 1;while (!Dbset.IsEOF())// 有没有到表结尾{Dbset.GetFieldValue(_T("Name"), var);Sname = (LPCSTR)var.pbstrVal;Dbset.GetFieldValue(_T("Psw"), var);Spsw = (LPCSTR)var.pbstrVal;Dbset.GetFieldValue(_T("Score"), var);Sscore = (LPCSTR)var.pbstrVal;if (Sname.Compare(m_logname) == 0 && Spsw.Compare(m_logpsw) == 0)//如果密码和账户与数据库一致{MessageBox(_T("登入成功!"), _T("温情提示"));CDialog::OnOK();first = 0;break;}else{Dbset.MoveNext();}}if (first){MessageBox(_T("用户或密码错误!"), _T("温情提示"));}db.Close();Dbset.Close();/*UINT nIndex = 0;CString TempStr;COleVariant OleVariant;// 删除列表控件所有记录BookList.DeleteAllItems();// 定义记录集对象,并打开记录集CDaoRecordset Record(&db);Record.Open(dbOpenDynaset, L"SELECT * FROM BOOK");// 移动到第一条记录Record.MoveFirst();while (!Record.IsEOF()){// 在列表控件添加记录TempStr.Format(L"%d", nIndex + 1);this->BookList.InsertItem(nIndex, TempStr);for (int i = 1; i <= 3; i++){Record.GetFieldValue(i, OleVariant);this->BookList.SetItemText(nIndex, i, OleVariant.bstrVal);}Record.GetFieldValue(4, OleVariant);TempStr.Format(L"%d", OleVariant.uintVal);this->BookList.SetItemText(nIndex, 4, TempStr);// 移到下一条记录Record.MoveNext () ;nIndex++ ;}// 关闭记录集Record.Close();*/}void loading::OnBnClickedOk2(){open1 = FALSE;// TODO: 在此添加控件通知处理程序代码}void loading::OnNMClickSyslink1(NMHDR *pNMHDR, LRESULT *pResult){// TODO: 在此添加控件通知处理程序代码zhuce dlg;//opening = TRUE;if (dlg.DoModal() == IDOK){Invalidate();}*pResult = 0;}void loading::OnNMClickSyslink2(NMHDR *pNMHDR, LRESULT *pResult){// TODO: 在此添加控件通知处理程序代码MessageBox(_T("暂无此功能,请联系开发者"), _T("温情提示"));*pResult = 0;}

中间太多注释的部分,因为改了又改,不怕辛苦,,弄出来了真的很开心,,,,,,给你们分享了;

这个注册部分呢也修改了;;;

收敛自己的脾气,偶尔要刻意沉默,

飞机大战笔记(Access数据库的使用)

相关文章:

你感兴趣的文章:

标签云: