环境:VC++6.0
MySql版本:mysql-5.5.20-win32
MySql连接管理:mysql-connector-odbc-5.2.2-ansi-win32
MySql数据管理:HeidiSQL_7.0
首先是各种软件的安装先安装MySql数据库,其次是Connector和HeidiSQL,这里就不过多介绍了,MySql可以到http://www.mysql.com/处下载。
1.打开HeidiSQL,并登陆数据库如图
2. 新建数据库和表,这里我建立的是test数据库和user_table表
3. 设置表
这个自行设置即可,顺便添加数据到表中。前期工作准备的就差不多了。
4. 设置数据源
在管理工具中找到数据源(ODBC)->添加->MySQL ODBC 5.2a Driver,然后设置我们的数据库以及用户名、密码、端口,
完了之后可以Test一下,失败了再去找问题吧。
5. 打开VC6.0新建MFC基于对话框的程序
其中ListControl控件的styles为Report。
6.在对话框的头文件中添加一下两个头文件
#include <odbcinst.h>
#include <afxdb.h>
进入OnInitDialog函数中,填写一下代码
m_list.InsertColumn(0, _T("ID"), LVCFMT_LEFT, 80); m_list.InsertColumn(1, _T("userName"), LVCFMT_LEFT, 100); m_list.InsertColumn(2, _T("userPasswd"), LVCFMT_LEFT, 150); db.Open(NULL, FALSE, FALSE, "ODBC;DSN=odbcTest;UID=root;PWD=123456"); rs.m_pDatabase = &db; m_list.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);以上是设置ListControl控件的格式以及打开数据库,其中db和rs定义在头文件中分别是CDatabase和CRecordset类型。
由于在程序中需要频繁调用显示数据库的操作,因此将其封装成一个函数getRecord,如下
m_list.DeleteAllItems(); rs.Open(CRecordset::forwardOnly, _T("SELECT * FROM user_table order by id Desc")); while (!rs.IsEOF()) { CString varID; rs.GetFieldValue("id", varID); m_list.InsertItem(0,varID); CString varName; rs.GetFieldValue("userName", varName); m_list.SetItemText(0, 1, varName); CString varPasswd; rs.GetFieldValue("userPasswd", varPasswd); m_list.SetItemText(0, 2, varPasswd); rs.MoveNext(); } rs.Close();
7. 数据库操作
数据库操作主要是用以下语句实现的
CString sql; sql.Format(_T("insert into user_table (userName, userPasswd) values('%s', '%s')"), m_userName, m_userPasswd); db.ExecuteSQL(sql);只要数据库语句会写,操作一般没问题的。
按键被按下时即弹出此对话框,之后将数据返回到主对话框中,用的是全局变量和静态函数的方法,即子对话框通过静态函数将数据返回到主对话框中,在子对话框中添加初始化函数是增加WM_INITDIALOG消息实现的。
其他细节性的东西这里就不赘述了。
参考文章:http://wenku.baidu.com/view/12b4790bbb68a98271fefa4c.html
参考文章:http://hi.baidu.com/hackxhj/item/cd895829d29058e950fd87ba
PS:本文代码我已上传到我的资源里面,如有需要,可去下载,由于本人刚接触MFC,请各位大牛批评指正。不胜感激。
http://download.csdn.net/detail/key123zhangxing/4660798