您的位置:首页 > 运维架构 > Linux

Linux C连接Mysql数据库的方法

2013-12-28 17:28 357 查看
1.首先要找到mysql.h头文件的位置

/usr/include/mysql

(使用命令 where is mysql 可以找到mysql安装的位置)

2.源文件的编译方法

1.先编译 gcc -o connect mysql2.c -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient (mysql -lmysqlclient之间要 有空格,—I 是加入 include头文件,-L是加入lib)

2.后执行 ./connect

3.操作数据库的代码

/*
============================================================================
Name        : mysql.c
Author      :
Version     :
Copyright   : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include </usr/include/mysql/mysql.h>

/**
* 测试链接数据库
*/
void ConnectionTest();

/**
* 插入数据
*/
void InsertData();

/**
* 删除数据
*/
void DeleteData();

/**
* 查询数据
*/
void QueryData();

int main(void) {
//ConnectionTest();
//InsertData();
//DeleteData();
QueryData();
return 0;

}

/**
* 测试链接数据库
*/
void ConnectionTest(){

MYSQL mysql;
//int t,r;
mysql_init(&mysql);
/**
* &mysql:数据库的;连接句柄引用
* "localhost": 数据库的位置,"localhost"表示本机,也可以用ip地址远程链接
* "root":管理员名陈
* "123":密码
* "test":数据库名称
*/
if(mysql_real_connect(&mysql, "localhost","root","123","test",0,NULL,0)){

printf("Connted Mysql successful!\n");
}else{
printf("Connted Mysql failed!\n");
}

mysql_close(&mysql);

}

/**
* 插入数据
*/
void InsertData(){
MYSQL mysql;//mysql数据库链接句柄
MYSQL_RES *res;//该结构代表返回行的查询结果
MYSQL_ROW row;//这个是一行数据的类型安全
char *query;
int flag;
mysql_init(&mysql);
if(mysql_real_connect(&mysql, "localhost","root","123","test",0,NULL,0)){

printf("Connted Mysql successful!\n");
}else{
printf("Connted Mysql failed!\n");
}

query = "insert into student(id,name) values(5,5)";
/**
* flage 为插入的标记变量,插入成功返回0
*/
flag = mysql_real_query(&mysql,query,(unsigned int)strlen(query));

if(flag == 0){
printf("Insert data success !\n");
}else{
printf("Inser data failure !\n");
}

mysql_close(&mysql);
}

/**
* 删除数据
*/
void DeleteData(){
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char* query;
int flag;
mysql_init(&mysql);
if(mysql_real_connect(&mysql,"localhost","root","123","test",0,NULL,0)){
printf("Connted Mysql successful!\n");
}else{
printf("Connted Mysql failed!\n");
}
query = "delete from student where id=1";
/**
* flage 为删除的标记变量,删除成功返回0
*/
flag = mysql_real_query(&mysql, query, (unsigned int)strlen(query));
if(flag == 0){
printf("Delete data success !\n");
}else{
printf("Delete data failure !\n");
}

mysql_close(&mysql);
}

/**
* 查询数据
*/
void QueryData(){
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char* query;
int flag,i;
mysql_init(&mysql);
if(mysql_real_connect(&mysql,"localhost","root","123","test",0,NULL,0)){
printf("Connted Mysql successful!\n");
}else{
printf("Connted Mysql failed!\n");
}
query = "select * from student";
/**
* flage 为查询的标记变量,查询成功返回0
*/
flag = mysql_real_query(&mysql, query, (unsigned int)strlen(query));
if(flag == 0){
printf("query data success  [%s]!\n",query);
}else{
printf("query data failure !\n");
}

/*mysql_store_result讲全部的查询结果读取到客户端*/
res = mysql_store_result(&mysql);

/*mysql_fetch_row检索结果集的下一行*/
while(row = mysql_fetch_row(res)){

/*mysql_num_fields返回结果集中的字段数目*/
for(i=0;i<mysql_num_fields(res);i++){
printf("%s\t",row[i]);
}
printf("\n");
}

mysql_close(&mysql);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: