MFC连接MySQL数据库

步骤/方法

一、首先安装mysql:我这里用的版本是mysql-5.0.27-win32.msi,vc6只支持32位的MySQL

二、VC6.0的设置
  1. 打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的“Show directories for:”下拉列表中选中“Includefiles”,然后在中间列表框中添加你本地安装MySQL的include目录路径。(我的是D:\Program Files\MySQL\MySQL Server 5.0\include)。
  2. 在上面说到的“Show directories for:”下拉列表中选中“Library files”,然后添加你本地安装MySQL的Lib目录路径。Lib目录下还有debug和opt两个目录,建议选debug。(我的是D:\Program Files\MySQL\MySQL Server 5.0\lib\debug)。
  3. 在“Project settings->Link:Object/library modules”里面添加“libmysql.lib”。
  4. 在你要连接数据库的文件里加入#include “winsock.h”和#include “mysql.h”两个文件。

[注]MySQL安装完后,文件夹中可能没有include和lib文件夹。这是因为默认不安装这两个文件夹。解决办法:再次运行安装程序,选择Modify选项,然后选择最后一项开发工具安装,确认即可。

三、数据库、表的创建
  打开“开始->所有程序->MySQL->MySQL Server 5.0->MySQL Command Line Client.exe”,如果没有设置密码就直接按回车,会提示服务器启动成功。

mysql> SHOW DATABASES;      //显示所有的数据库,注意一定要 敲“;”后再按回车
mysql> CREATE DATABASE mydb;//创建数据库mydb
mysql> USE mydb;            //选择你所创建的数据库mydb
mysql> SHOW TABLES;         //显示数据库中的表
mysql> CREATE TABLE mytable (username VARCHAR(50), password VARCHAR(200));              //创建一个表mytable: 用户名;密码
mysql> DESCRIBE mytable;    //显示表的结构

四、VC编程

MYSQL mysql; //数据库连接句柄
mysql_init(&mysql);
if(!mysql_real_connect(&mysql,"localhost","root","dxd","mydb",3306,NULL,0))
{        //mydb为你所创建的数据库,3306为端口号,root是用户名,dxd是密码
    AfxMessageBox("数据库连接失败");
    return FALSE;
}

常用的数据库操作

// 数据库的句柄
MYSQL m_sqlCon;
// 查询结果集的声明  
MYSQL_RES *m_res;  
// 查询结果行声明  
MYSQL_ROW row;

//定义sql语句
const char *sql = "select * from table";

//执行查询
m_res = mysql_store_result(&m_sqlCon);

//如果为空则返回
if(NULL == m_res) return;

//重复读取行,把数据放入列表中,直到row为NULL
while(row = mysql_fetch_row(m_res)) 
{
  for (int rols = 0; rols < 2; rols++)
  {
    CString myreaddata(row[rols]);
    list.AddString(myreaddata);
  }
}

//执行插入

const char *sql = "insert into tb_rdchange(way_id,sp_way_id) values(4,4)";
if(mysql_real_query(&m_sqlCon, sql,(unsigned long)strlen(sql)))
{
  return;
}

五. 最后附上用MFC做一个图书管理系统时遇到的坑:

  • classview视图中有某些类消失看不见了。
    解决办法:
    在对应的.h文件中,把class关键字去掉后编译,出错后,重新添加class关键字,再次编译,该类就会在classview视图中重新出现

  • CString类型的字符串判断长度是否为0,调试时发现,发现不能用if(!str.getLength()),而是用if(str.getLength()==0)

  • 组合框不能正常弹出。原因可能是,放入的时候向下拖放的范围太小。
    解决方法:
    如果想调整组合框的下拉列表部分的范围,方法是对话框资源处于编辑状态时,鼠标移动到右侧向下的箭头上,这时候会发现光标变成了一个上下的箭头,单击鼠标左键,然后将光标移动到组合框下方的蓝色的小方块上,并当光标变成双向箭头的形状时,按下鼠标左键并且向下拖动,直至拖到适合的范围。

你可能感兴趣的:(数据库,MFC)