项目操作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;
来源:CSDN
作者:SilentAssassin
链接:https://blog.csdn.net/yao5hed/article/details/81059848