其实给Unrealircd增加Mysql数据库的支持的工作还是比较繁琐的,分别需要做编译配置增加,h头文件,mysql操作处理文件,以及操作调用等方面的工作,下面分别做一介绍。
一、增加mysql操作处理文件
需要支持mysql数据库的操作,则需要对数据库进行连接,增删改查等操作,对此我已经上传了一个我正在使用的完整的c文件,将由它来完成上面提到的工作。点击这里可以下载。下载后请将其放入unrealircd\src目录下。
二、定义全局连接变量以备调用
请打开include\h.h文件,在最后增加下面代码:
第二行连接mysql的函数,三至六行分别执行mysql的增删改查操作,返回值0成功,非0为不成功,第7行定义一个向mysql连接ping的方法,因为mysql连接在默认的48小时(具体值记不清)无操作后会自动断开,这显然不能满足我们的要求,我们需要的是一个一直不间断的连接,所以我们会定时向mysql服务器发送ping命令,以表示此连接为活动连接,不要断开。最后一行则是向unrealircd添加了一个定时执行的任务方法,它会不间断的定时发送ping命令。
关于数据库操作的代码已经在上面下载的mysql.c文件中完成。
为Unrealircd增加Mysql的数据库支持(二)
一、增加mysql操作处理文件
需要支持mysql数据库的操作,则需要对数据库进行连接,增删改查等操作,对此我已经上传了一个我正在使用的完整的c文件,将由它来完成上面提到的工作。点击这里可以下载。下载后请将其放入unrealircd\src目录下。
二、定义全局连接变量以备调用
请打开include\h.h文件,在最后增加下面代码:
extern MODVAR MYSQL *my_conn;
extern MYSQL *my_mysql_connect();
extern int my_mysql_insert(MYSQL *my_conn, char *query);
extern int my_mysql_delete(MYSQL *my_conn, char *query);
extern int my_mysql_update(MYSQL *my_conn, char *query);
extern MYSQL_RES *my_mysql_select(MYSQL *my_conn, char *query);
extern int my_mysql_ping(MYSQL *my_conn);
extern EVENT(check_mysql_conn);
其中第一行,定义一个全局的mysql连接变量,因为系统起动,只需要与mysql服务器建立一个连接,而不是在使用mysql的时候再去建立连接,这样效率肯定不高。extern MYSQL *my_mysql_connect();
extern int my_mysql_insert(MYSQL *my_conn, char *query);
extern int my_mysql_delete(MYSQL *my_conn, char *query);
extern int my_mysql_update(MYSQL *my_conn, char *query);
extern MYSQL_RES *my_mysql_select(MYSQL *my_conn, char *query);
extern int my_mysql_ping(MYSQL *my_conn);
extern EVENT(check_mysql_conn);
第二行连接mysql的函数,三至六行分别执行mysql的增删改查操作,返回值0成功,非0为不成功,第7行定义一个向mysql连接ping的方法,因为mysql连接在默认的48小时(具体值记不清)无操作后会自动断开,这显然不能满足我们的要求,我们需要的是一个一直不间断的连接,所以我们会定时向mysql服务器发送ping命令,以表示此连接为活动连接,不要断开。最后一行则是向unrealircd添加了一个定时执行的任务方法,它会不间断的定时发送ping命令。
关于数据库操作的代码已经在上面下载的mysql.c文件中完成。
为Unrealircd增加Mysql的数据库支持(二)