mysql数据库连接接口实现
2017-08-25 08:49
375 查看
0x00 前期准备
操作系统:ubuntu16.0
0x01 代码编写
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,
我的天,后来才想起,申明不能带参数。我勒个去!
操作系统: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,
我的天,后来才想起,申明不能带参数。我勒个去!
相关文章推荐
- Eclipse+Tomcat实现Mysql数据库连接
- javaWeb之连接服务器接口Servlet的实现
- JDBC 用Statement接口简单地连接mysql数据库
- Eclipse+Tomcat实现Mysql数据库连接
- Java连接MySQL数据库实现增删改查操作!
- mysql数据库的连接以及增删改查Java代码实现(Statement版)
- 数据库基础篇(三)通过EF实现与MySql数据库的连接
- mysql数据库中实现内连接、左连接、右连接
- PHP案例:实现登录功能(连接MySQL数据库)
- JSP中的连接mysql数据库的代码实现
- JAVA 利用JDBC连接MYSQL数据库以及增删改查的实现【学习笔记】
- MyEclipse下jsp连接mysql数据库实现用户登录
- 使用Web部件连接接口实现可以设置条件的过滤器
- Java连接MYSQL数据库的实现步骤
- 连接池实现连接Mysql数据库
- MySQL数据库接口的VC具体实现与应用
- 实现Mysql数据库免安装配置 及 与 MyEclipse的连接
- [原创+转载]在本地没有安装mysql数据库的情况下用c++代码实现连接远程mysql数据库
- vpp 类veth接口实现(连接多vrouter,多vbridge)
- 通过JDBC接口连接到MySQL数据库的两种方法