使用C++的mysql.h库操作MySQL时如何关闭数据库连接
MySQL C API 数据库连接正确关闭方法
基础关闭实现
使用mysql.h库操作数据库时,直接调用mysql_close()函数即可释放已建立的连接资源。调用前需先判断连接指针有效性,避免空指针访问异常:
// 所有数据库操作执行完成、且已释放所有MYSQL_RES结果集后执行关闭 if (conn != nullptr) { mysql_close(conn); conn = nullptr; // 关闭后置空,避免野指针和重复释放 }
注意事项
- 必须提前释放所有通过该连接查询得到的
MYSQL_RES结果集(使用mysql_free_result()),否则会造成内存泄漏 - 若
mysql_real_connect返回空指针(连接失败),仍需要调用mysql_close释放mysql_init申请的内存资源 - 不要重复调用
mysql_close()释放同一个连接,关闭后将指针置空可有效规避该问题
完整调用示例
#include <mysql.h> int main() { // 初始化连接 MYSQL* conn = mysql_init(nullptr); if (conn == nullptr) { // 初始化失败直接返回,无需额外释放资源 return 1; } // 建立连接 conn = mysql_real_connect(conn, "localhost", "root", "admin", "uczelnia", 3306, NULL, 0); if (conn == nullptr) { // 连接失败,先释放init申请的资源 mysql_close(conn); return 2; } // 此处执行数据库增删改查操作,操作完成后记得释放MYSQL_RES结果集 // 正常关闭连接 mysql_close(conn); conn = nullptr; return 0; }
内容的提问来源于stack exchange,提问作者lolorek
相关产品推荐
相关产品推荐

