MySQL的C/C++的API接口

做~自己de王妃 提交于 2019-12-01 04:37:40

项目操作MySQL用的是现有的接口,是将MySQL语句封装在动态库里的,今天看了看最底层的情况,才发现操作MySQL不是用Qt,而是它自带的C++ API,之前没直接用过原生API,今天记录一下。

代码连接数据库用的函数是MyConnection::connect_in(),用到的函数是mysql_init, mysql_real_connect, mysql_close, mysql_select_db, mysql_set_server_option

登录MySQL数据库

MYSQL * STDCALL mysql_init(MYSQL *mysql);   //成功返回*mysql指针,失败返回NULL。

MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, 
                                const char *host,   //MySQL的IP,远程登录输入远程登录的IP地址
                                const char *user,   //登录用户
                                const char *passwd, //登录密码
                                const char *db,     //使用的数据库名称
                                unsigned int port,  //MySQL端口
                                const char *unix_socket,    //是否使用socket机制登录,NULL:否
                                unsigned long clientflag);  //连接标志,通常为0
//成功返回*mysql指针,失败返回NULL。

设置活动的MySQL数据库

int STDCALL mysql_select_db(MYSQL *mysql, const char *db);

操作MySQL

int STDCALL mysql_query(MYSQL *mysql,   //MySQL操作结构体
                        const char *q); //操作命令

//成功返回0,失败返回1

设置多语句

mysql_query通常使用单独的SQL语句(不带“;”的),也可调用mysql_set_server_option(&mysql,MYSQL_OPTION_MULTI_STATEMENTS_ON)指定以分号分隔的多个SQL语句

关闭MySQL

void STDCALL mysql_close(MYSQL *sock);

测试连接

int mysql_ping(MYSQL *mysql);函数 Ping 一个服务器连接,如果没有连接则重新连接。可用于空闲很久的脚本来检查MySQL服务器是否关闭了连接:

int ret = mysql_ping(&mysql);
if (ret ==0 ) {
    return true;
}
qWarning("连接错误:%s", mysql_error(&mysql));
mysql_close(&mysql);
hasConnect=false;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!