我用的是VS2010,Mysql,Win7 32位 ,通过ODBC接口进行数据库编程 。
首先你要安装mysql odbc 驱动,这个可以在官网上下载到。
安装Mysql驱动完成后就可以开始下面的工作.
首先,我们先建立一个数据库mydb
选择我们新创建的数据库mydb
再创建一个表 admin_info 作为登入界面的一个表
插入一条新纪录,用户名aa,密码11
完成数据库的创建后,我们要添加Mysql 的odbc 驱动
Data Source Name 是数据库名字,自己可以随便取一个(我这里取的和我在数据库创建的一样)
TCP/IP Server :localhost (表示本机的数据库)
User和Password是你连接你自己Mysql的用户名和密码
Database 选择我们刚才自己新建的数据库mydb,通过旁边的Test 可以查看连接是否成功
这样就创建成功了!
通过VS2010新建一个MFC application工程,选择基于对话框的。
然后创建如下控件。
为控件添加变量,右键对话框空白处
添加如下变量
再为登入按钮,添加单击响应事件
下面 我们要新建一个类,通过这个类,我们可以在程序中对数据库进行操作,这个类就是CRecordset。
这样,我们的类就创建完成了。该类的名字叫Cadmin_info,继承CRecordset类
最后,我们添加一些代码
在stdafx.h中加入头文件
#include <afxdb.h>
在mydb.cpp中添加如下代码,mydb是我新建mfc工程的名字
CDatabase m_db;
在刚才创建的对跨框类中引入m_db,在BOOL CmydbDlg::OnInitDialog()中添加如下代码
extern CDatabase m_db
// TODO: Add extra initialization here m_db.OpenEx(_T("DSN=mydb;UID=root;PWD=deathnote"),CDatabase::noOdbcDialog); MessageBox(_T("连接成功!"),_T("登入系统"),MB_OK|MB_ICONINFORMATION);
在登入按钮函数 OnBnClickedOk中添加如下代码
void CmydbDlg::OnBnClickedOk() { // TODO: Add your control notification handler code here UpdateData(); Cadmin_info *m_pLogset = new Cadmin_info(&m_db); CString strSQL; strSQL.Format(_T("select * from Admin_Info where User_Name='%s' AND Password='%s'"),m_uer_name,m_password); m_pLogset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); if(m_pLogset->GetRecordCount()==0) { if(count<2) { count++; MessageBox(_T("用户名或密码错误,请重新输入!"),_T("登入系统"),MB_OK|MB_ICONERROR); m_uer_name.Empty(); m_password.Empty(); UpdateData(FALSE); return ; } else { m_db.Close(); MessageBox(_T("登入失败超过3次,请于管理员联系!"),_T("登入系统"),MB_OK|MB_ICONERROR); CDialogEx::OnOK(); } } else { MessageBox(_T("恭喜,登入成功!"),_T("登入系统"),MB_OK|MB_ICONINFORMATION); //CDialogEx::OnOK(); DialogMain dlgmain; dlgmain.m_name = m_uer_name; dlgmain.DoModal(); OnCancel(); } }
到此为止,登入界面完成,编译,运行.