一、MySQL数据库的安装
下载MySQL Server 5.1这个版本,当然版本越新越好。如果对MySQL数据库不是很熟悉的同学可以在网上下载Navicat for MySQL这个软件,这个软件有可视化的界面可以对MySQL数据库进行操作,其界面与微软的SQL Server的界面差不多。
二、VC8.0的设置
因为本人对MySQL数据库的编程用的是Visual Studio 2005这个版本,所以下面的设置可能与VC6.0又一点点的区别。设置步骤如下:
(1) 打开项目->属性->配置属性->C/C++->General->additional include directories
在这里面添加C:/Program Files/MySQL/MySQL Server 5.1/include和C:/Program Files/MySQL/MySQL Server 5.1
/lib/opt这两个路径。
注:由于本人的MySQL数据库是安装在C:/Program Files这个目录下的,所以就存在了上面的路径的写法,大家可以根据自己的
MySQL数据库的安装位置确定路径。
(2)打开项目->属性->配置属性->Linker->Input->additional dependencies
在这里面添加libmysql.lib
(3)在stdafx.h里面添加如下的内容:
#include "winsock.h"
#include "mysql.h"
#pragma comment(lib,"libmySQL.lib")
注:#include "winsock.h"一定要写在#include "mysql.h"的前面,否则出错。
(4)将“libmySQL.lib、libmySQL.dll”拷到你所建的工程的目录下。
三、数据库、表的创建
如果没安装Navicat for MySQL这个软件的同学可以直接根据命令在MySQL中进行建库、建表。
打开“开始->所有程序->MySQL->MySQL Server 5.1->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(100), visitelist VARCHAR(200), remark VARCHAR(200));//创建一个表mytable: 用户名;访问列表;备注 mysql> DESCRIBE mytable;//显示表的结构
四、VC编程
(1) 数据库的连接操作
- MYSQL *mysql;//数据库连接句柄
- mysql = (MYSQL *)malloc(sizeof(MYSQL));
- mysql_init(mysql);
- mysql=mysql_real_connect(mysql,"localhost","root","1","mydb",3306,NULL,0);
- if(!mysql)
- {
- printf("conn fail... ");
- return FALSE;
- }
mysql=mysql_real_connect(mysql,"localhost","root","1","mydb1",3306,NULL,0);
其中"1"为本人MySQL数据库的密码。
(2) 实现添加 功能
- CString strUsername("hhhhhhhhhhh"),strList("ddddddddddddd"),strRemark("kkkkkkkk"),strSQL;
- strSQL.Format("insert into mytable(username,visitelist,remark)values('%s','%s','%s')",strUsername,strList,strRemark);
- if(mysql_real_query(mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)
- {
- printf("%s", mysql_error(mysql));
- printf("添加数据失败!");
- }
在Visual Studio 2005中VC是默认Unicode,所以上面的代码中
strSQL.Format("insert into mytable(username,visitelist,remark)values('%s','%s','s')",strUsername,strList,strRemark);是编译不成功的,所以要设置多字符的形式才能编译成功,至于多字符在Visual Studio 2005中如何设置,这里不再赘述,不了解的同学可以上网去搜一下。如果不想用CString来实现,可以用sprintf的方法来写,代码如下:
- //sprintf方法写插入语句
- char ch_query1[200];
- char h1[]="gggggggggggggggg";
- char h2[]="gggggggggggggggg";
- char h3[]="gggggggggggggggg";
- sprintf(ch_query1,"insert into mytable(username,visitelist,remark)values('%s','%s','%s')",h1,h2,h3);
- if(mysql_real_query(mysql,ch_query1,(UINT)strlen(ch_query1))!=0)
- {
- printf("插入数据失败!");
- }
(3) 实现修改功能
CString strUsername,strList,strRemark,strSQL,str_PreName;//str_PreName用于记录想要修改的行,详情
请看源代码 strSQL.Format("update mytable set username=/'%s/',visitelist=/'%s/',
remark=/'%s/' where username=/'%s/'",strUsername,strList,strRemark,str_PreName);
if(mysql_real_query(mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0){
AfxMessageBox("修改失败");
}
(4) 实现删除功能
CString strSQL; strSQL.Format("delete from mytable where username=/'%s/'",str_PreName);//必须要有/'/' if(mysql_real_query(mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0){ AfxMessageBox("删除失败"); }
(5) 读取表格
- //查找具体的数据
- MYSQL_RES *result;
- MYSQL_ROW row;
- if(!(result=mysql_use_result(mysql)))
- {
- printf("查询数据失败!");
- }
- while(row=mysql_fetch_row(result))
- {
- printf("%s %s %s",row[0],row[1],row[2]);
- }
(6) 关闭数据库
mysql_close(mysql);//最好写到OnDestroy()函数中
初次接触MySQL,这里只是本人通过上网搜集资料,并且自己亲自去操作得到的一点点经验,有错误或者不全面的地方望
指出。
出处:http://blog.csdn.net/wencheng2998/article/details/6428985