c 怎么连接mysql博客_c 连接Mysql数据库

MysqlConnect.h

/********************************************************************

** 文件名:MysqlConnect.h

** 创建人:ss

** 完成日期:2010-12-08

********************************************************************/

#ifndef MYSQL_CONNECT_H

#define MYSQL_CONNECT_H

#include

#include

#include

#include

#include

#include

#include

typedef struct MysqlConnect MysqlConnect;

typedef void *(*query_handler)(MYSQL_ROW);

struct MysqlConnect

{

int (*connect)(MysqlConnect *this);

int (*query)(MysqlConnect *this,char *query,query_handler);

int (*execute)(MysqlConnect *this,char *query);

int (*close)(MysqlConnect *this);

void (*destory)(MysqlConnect *this);

};

MysqlConnect* MysqlConnect_create(char *host,char *user_name,char *password,char *datebase,unsigned short port);

#endif

MysqlConnect.c

#include "MysqlConnect.h"

typedef struct private_MysqlConnect private_MysqlConnect;

//私有结构体

struct private_MysqlConnect

{

MysqlConnect public;

MYSQL mysql;

MYSQL_RES *result;

MYSQL_ROW row;

char host_name[100];

char user_name[50];

char password[50];

char database[100];

unsigned short port;

};

//回调函数--用户接口,用来对查询出来的数据进行处理

void* handler(MYSQL_ROW row)

{

printf("%s\n",row[1]);

return NULL;

}

//连接数据库

int MysqlConnect_connect(private_MysqlConnect *this)

{

if(mysql_real_connect(&this->mysql,this->host_name,this->user_name,this->password,this->database,this->port,NULL,0))

{

// mysql_set_character_set(&this->mysql,"utf8");

printf("success\n");

return 1;

}

else

{

printf("connect error");

return 0;

}

}

//查询数据库

int MysqlConnect_query(private_MysqlConnect *this,char *query,query_handler handler)

{

if(mysql_real_query(&this->mysql,query,strlen(query))==0)

{

this->result = mysql_store_result(&this->mysql);

while((this->row = mysql_fetch_row(this->result))!=NULL)

{

handler(this->row);

}

mysql_free_result(this->result);

}

else

{

printf("query error!\n");

return 0;

}

return 0;

}

//操作数据库

int MysqlConnect_execute(private_MysqlConnect *this,char *query)

{

if(mysql_real_query(&this->mysql,query,strlen(query))==0)

{

return 1;

}

else

{

printf("query error!\n");

return 0;

}

}

//关闭连接

int MysqlConnect_close(private_MysqlConnect *this)

{

mysql_close(&this->mysql);

}

//销毁连接

void MysqlConnect_destory(private_MysqlConnect *this)

{

free(this);

}

//初始化

MysqlConnect* MysqlConnect_create(char *host,char *user_name,char *password,char *database,unsigned short port)

{

private_MysqlConnect *this=malloc(sizeof(private_MysqlConnect));

strcpy(this->user_name,user_name);

strcpy(this->password,password);

strcpy(this->host_name,host);

strcpy(this->database,database);

this->port=port;

this->public.connect=(int (*)(MysqlConnect *))MysqlConnect_connect;

this->public.query=(int (*)(MysqlConnect *,char *,query_handler ))MysqlConnect_query;

this->public.execute=(int (*)(MysqlConnect *,char *))MysqlConnect_execute;

this->public.close=(int (*)(MysqlConnect *))MysqlConnect_close;

this->public.destory=(void (*)(MysqlConnect *))MysqlConnect_destory;

return (MysqlConnect *)this;

}

int main()

{

//设置MYSQL数据库连接参数

/*数据库所在主机ip,用户名,密码,登陆的数据库,端口(默认3306)*/

MysqlConnect *conn=MysqlConnect_create("127.0.0.1","name","password","database",3306);

//建立数据库连接

conn->connect(conn);

//操作数据库----做update,add 操作使用

conn->execute(conn,"insert into key_word values(null,'ss','ssss',1,now())");

//关闭数据库

conn->close(conn);

//连接数据库

conn->connect(conn);

//查询数据库

conn->query(conn,"select * from key_word",(query_handler)handler);

//关闭数据库

conn->close(conn);

//回收资源

conn->destory(conn);

}

makefile

MysqlConnect:MysqlConnect.o

gcc -g -o MysqlConnect MysqlConnect.o -I/include/mysql -L/lib/mysql -lmysqlclient -lz

MysqlConnect.o:MysqlConnect.c MysqlConnect.h

gcc -g -c MysqlConnect.c

clean:

rm *.o

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-12-08 21:42

浏览 504

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值