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
分享到:
2010-12-08 21:42
浏览 504
评论