您的位置:首页 > 数据库 > MySQL

在VC6中使用c API方式连接MySQL数据库

2009-12-27 21:30 585 查看
在VC6中使用c API方式连接MySQL数据库

一、环境配置
1、在MySql的官方网站下载mysql-connector-c-noinstall,并将解压后的bin和include文件夹拷贝到Mysql的安装目录
2、设置VC6环境,在vc工具-选项-目录,加入刚才的Include文件夹的路径,例如:C:/Program Files/MySQL/MySQL Server 5.1/include

二、工程设置
3、将lib文件夹中的linmysql.lib和libmysql.dll拷贝到工程目录下,工程-设置-连接,在对象/库模块中添加wsock32.lib和libmysql.lib

三、示例
4、先导入测试程序所需的环境,将以下SQL语句保存为sql脚本文件并导入
#VC6通过API连接Mysql测试环境
#创建数据库
drop database if exists `test`; #如果有这个数据库,则移除它 create database test; #创建数据库
use test; #使用数据库
#创建表User,保存会员属性
drop table if exists `User`;
create table User (
id int(11) not null auto_increment,
name varchar(20),
age int(11),
primary key (id)
);
#插入一些数据
insert into user values (NULL, 'name1', 11);
insert into user values (NULL, 'name2', 22);
insert into user values (NULL, 'name3', 33);

5、测试代码

#include <windows.h>
#include <mysql.h>
#include "stdio.h"

MYSQL mysql, *sock; //mysql连接
MYSQL_RES *res; //这个结构代表返回行的一个查询结果集
MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示
char query[150]; //查询语句

bool ConnectDatabase();     //函数声明
void FreeConnect();
bool QueryDatabase();
bool InsertData();

int main()
{
ConnectDatabase();
QueryDatabase();
InsertData();
QueryDatabase();
FreeConnect();

return 0;
}

//连接数据库
bool ConnectDatabase()
{
//初始化mysql
mysql_init(&mysql);  //连接mysql,数据库

if (!(sock = mysql_real_connect(&mysql,"localhost", "root", "root", "test",0,NULL,0)))
{
printf( "Error connecting to database:%s/n",mysql_error(&mysql));
return false;
}
else
{
printf("Connected.../n");
return true;
}
}

//释放资源
void FreeConnect()
{
//释放资源
mysql_free_result(res);
mysql_close(sock);
}

//查询数据
bool QueryDatabase()
{
sprintf(query, "select * from user"); //执行查询语句
if(mysql_query(sock, query))        //执行SQL语句
{
printf("Query failed (%s)/n",mysql_error(sock));
return false;
}
else
{
printf("query success/n");
}

//获取结果集
if (!(res=mysql_store_result(sock)))    //获得sql语句结束后返回的结果集
{
printf("Couldn't get result from %s/n", mysql_error(sock));
return false;
}

//打印结果数
printf("number of fields returned: %d/n",mysql_affected_rows(sock));

//获取字段的信息
printf("|/t%s/t|/t%s/t|/t%s/t|/n", mysql_fetch_field(res)->name,    //打印各字段名
mysql_fetch_field(res)->name,mysql_fetch_field(res)->name);

//打印获取的数据
while (row = mysql_fetch_row(res))      //获取下一行
{
printf("|/t%s/t|/t%s/t|/t%s/t|/n", row[0], row[1], row[2]);
}
return true;
}

//插入数据
bool InsertData()
{
sprintf(query, "insert into user values (NULL, 'name4', 44);");
if(mysql_query(sock, query))        //执行SQL语句
{
printf("Query failed (%s)/n",mysql_error(sock));
return false;
}
else
{
printf("Insert success/n");
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: