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

mysql数据库连接接口实现

2017-08-25 08:49 375 查看
0x00 前期准备

操作系统:ubuntu16.0

MYSQL *mysql_init(MYSQL *mysql)

#include <mysql/mysql.h>
MYSQL *mysql_real_connect( MYSQL *mysql,
const char *host,
const char *user,
const char *password,
const char *database,
unsigned int port,
const char *unix_socket,
unsigned int client_flag );


0x01 代码编写

/******
@@describe:		连接mysql
@@parameter:	const char *host,			//ip
const char *user,			//登录数据库帐号
const char *password,		//登录数据库密码
unsigned int port,			//连接端口
char *database = NULL	//连接指定的数据库

@@return: 		NULL:连接数据库失败
MYSQL*:操作数据库句柄
*/
MYSQL* ConnectMysqlDb(const char *host,const char *user,
const char *password,unsigned int port,
char *database);

/******
@@describe:		连接mysql
@@parameter:	const char *host,			//ip
const char *user,			//登录数据库帐号
const char *password,		//登录数据库密码
unsigned int port,			//连接端口
char *database = NULL	//连接指定的数据库

@@return: 		NULL:连接数据库失败
MYSQL*:操作数据库句柄
*/
MYSQL* ConnectMysqlDb(const char *host,const char *user,
const char *password,unsigned int port,
char *database = NULL)
{
MYSQL* db = NULL;

//校验参数
if((NULL == host) ||
(NULL == user) ||
(NULL == password) ||
(0 >port)   )
{
printf("pram error! \n");
return NULL;
}

db = mysql_init(NULL);
if(NULL == db)
{
//write error log
printf("my sql init");
return NULL;
}

//检验是否连接数据库
if(NULL == database)
{//不带数据库连接
db = mysql_real_connect(db, host,
user, password,
NULL, port,
NULL,0);
}else{
//带数据库连接
db = mysql_real_connect(db, host,
user, password,
database, port,
NULL,0);
}

if(NULL == db)
{
printf("connect error!");
return NULL;
}

return db;
}


 

0x02 经验总结

1.封装接口的前提是:单一职责概念的使用,一个接口办一个事。

2.封装接口前先将要封装的业务理清楚

3.编写伪代码,理清楚封装的接口使用到的api

4.进行代码编写

5.封装接口测试

 刚开始工作那会,不懂封装接口要使用设计模式的概念,写的接口臭长臭长的,要么就功能耦合在一起变成了一个只能自己用的超级函数,后期维护和同事使用简直'毁天灭地'。动手前一定要多思考,把自己思路理清楚再动手,毕竟磨刀不费看柴功。

0x03 错误总结

      g++ mysqlfunc.cpp -fPIC -shared -o libfunc.so

将自定义库函数接口编译成动态库的时候,一直报错

mysqlfunc.cpp: In function ‘MYSQL* ConnectMysqlDb(const char*, const char*, const char*, unsigned int, char*)’:
mysqlfunc.cpp:25:44: error: default argument given for parameter 5 of ‘MYSQL* ConnectMysqlDb(const char*, const char*, const char*, unsigned int, char*)’ [-fpermissive]
char *database = NULL)
^
In file included from mysqlfunc.cpp:8:0:
mysqlfunc.h:25:8: note: previous specification in ‘MYSQL* ConnectMysqlDb(const char*, const char*, const char*, unsigned int, char*)’ here
MYSQL* ConnectMysqlDb(const char *host,const char *user,

我的天,后来才想起,申明不能带参数。我勒个去!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: