VS2008连接mysql

内容

  1. VC6.0的设置
  2. 数据库、表的创建
  3. vc编程实现
  4. 结果

VC6.0的设置

  1. vs2008 中新建一个win32 console项目,右击项目,选择属性。
    找到 配置属性—>c/c++—–>常规—–>附加包含目录,添加要包含的目录,这里选择mysql安装后的include文件夹(我的是D:\Program Files\MySQL\MySQL Server 5.0\include)。
  2. 找到 配置属性—>链接器—–>常规—–>附加库目录 添加要包含的目录添加要包含的目录,这里选择mysql安装后lib文件夹(我的是D:\Program Files\MySQL\MySQL Server 5.0\lib)。
  3. 创建工程,将本地安装MySQL的Lib目录下的“libmysql.dll”拷到你所建的工程的目录下。

数据库、表的创建

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

1
2
3
4
5
mysql> SHOW DATABASES;//显示所有的数据库,注意一定要 敲“;”后再按回车
mysql> CREATE DATABASE mydb;//创建数据库mydb
mysql> USE mydb;//选择你所创建的数据库mydb
mysql> SHOW TABLES; //显示数据库中的表
mysql> CREATE TABLE mytable (username VARCHAR(20), password VARCHAR(20), remark VARCHAR(200));//

创建一个表mytable: 用户名;密码;备注

1
2
3
mysql> DESCRIBE mytable;//显示表的结构
mysql> INSERT INTO mytable VALUES('tom','pwd','remark'); //插入数据
mysql> select * from mytable;//查询数据

vc编程实现

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <winsock.h>
#include <mysql.h>
#include <iostream>
using namespace std;
//写这句或者在Project->Setings里设置
#pragma comment(lib,"libmysql.lib")
int main()
{
const char user[] = "username"; //username
const char pswd[] = "password"; //password
const char host[] = "localhost"; //or"127.0.0.1"
const char table[] = "mydb"; //database
unsigned int port = 3306; //server port
MYSQL myCont; //数据库连接句柄
MYSQL_RES *result;
MYSQL_ROW sql_row;
MYSQL_FIELD *fd;
char column[32][32];
int res;
mysql_init(&myCont);
if(mysql_real_connect(&myCont,host,user,pswd,table,port,NULL,0))//连接数据库
{
cout<<"connect succeed!"<<endl;
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
res=mysql_query(&myCont,"select * from mytable");//查询
if(!res)//查询成功
{
result=mysql_store_result(&myCont);//保存查询到的数据到result
if(result)
{
int i,j;
cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl;
for(i=0;fd=mysql_fetch_field(result);i++)//获取列名
{
strcpy(column[i],fd->name);
}
j=mysql_num_fields(result);
for(i=0;i<j;i++)
{
printf("%10s\t",column[i]);
}
printf("\n");
while(sql_row=mysql_fetch_row(result))//获取具体的数据
{
for(i=0;i<j;i++)
{
printf("%10s\t",sql_row[i]);
}
printf("\n");
}
}
}
else //查询失败
{
cout<<"query sql failed!"<<endl;
}
}
else
{
cout<<"connect failed!"<<endl;
}
if(result!=NULL) mysql_free_result(result);//释放结果资源
mysql_close(&myCont);//断开连接
return 0;
}

结果

参考

  1. 官方api说明
    http://dev.mysql.com/doc/refman/5.5/en/c-api-function-overview.html
  2. http://blog.sina.com.cn/s/blog_53729f040100glqx.html
  3. http://blog.csdn.net/cenziboy/article/details/6329952
  4. http://my.oschina.net/u/156363/blog/62069