基于Mysql C Api编写mysql客户端程序
来源:互联网 发布:白银投资实时数据 编辑:程序博客网 时间:2024/05/22 13:06
在编写mysql客户端程序时,最常见的就是连接mysql,和关闭mysql,在这里需要注意,如果使用不当将会造成内存泄漏。
单线程环境:一般使用 -lmysqlclient链接mysql客户库,mysql_init函数会自动调用my_library_init初始化mysql库,所以不需要,需要注意的是这两个函数都是非线程安全的。
示例代码如下:
/* mysql连接 */void pa_mysql_connect(MYSQL *mysql_conn) {my_init();if (NULL == mysql_init(mysql_conn)) {write_log("Colud not init mysql.");}if (!mysql_real_connect(mysql_conn, g_mysql->host, g_mysql->username, g_mysql->passwd, g_mysql->dbname, g_mysql->port, NULL, 0)) {write_log("Mysql connect error : .", mysql_error(mysql_conn));}}/* 关闭mysql连接 */void pa_mysql_close(MYSQL *mysql_conn) {mysql_close(mysql_conn);mysql_conn = NULL;}
多线程环境:一般调用-lmysqlclient_r调用mysql安全类库,需要在各个线程中调用mysql_library_init、mysql_library_end来分配和释放mysql资源,或者增加线程锁保护资源,否则会造成内存泄漏。
示例代码如下:
/* mysql连接 */void pa_mysql_connect(MYSQL *mysql_conn) {my_init();if (NULL == mysql_init(mysql_conn)) {write_log("Colud not init mysql.");}if (mysql_library_init(0, NULL, NULL)) {write_log("Could not initialize mysql library.");}if (!mysql_real_connect(mysql_conn, g_mysql->host, g_mysql->username, g_mysql->passwd, g_mysql->dbname, g_mysql->port, NULL, 0)) {write_log("Mysql connect error : .", mysql_error(mysql_conn));}}/* 关闭mysql连接 */void pa_mysql_close(MYSQL *mysql_conn) {mysql_close(mysql_conn);mysql_conn = NULL;mysql_library_end();}
参考资料:
http://www.souzz.net/online/MySQL/manual_Clients.html
http://dev.mysql.com/doc/refman/5.0/en/
- 基于Mysql C Api编写mysql客户端程序
- 基于Mysql C Api编写mysql客户端程序 多线程
- MYSQL C API 访问程序
- Python3.X:编写基于MySQL的程序
- Linux上c语言编写MySQL程序
- mysql C api 多线程多连接 客户端实现
- C语言编写基于mysql数据库的简单数据管理系统
- C++mysql编写过程
- 基于C API的MySQL数据库多线程访问方法
- 基于C API的MySQL数据库多线程访问方法
- 基于C API的MySQL数据库多线程访问方法(收藏)
- 基于C API的MySQL数据库多线程访问方法
- 【教程】Mac使用xcode编写连接mysql的C程序
- VS2015编写C语言程序连接mysql并插入变量
- 《MySQL技术内幕》编写C程序示例代码勘误
- Mysql C api
- MYSQL C API
- MySQL C API
- 第十二周 任务三
- NYOJ 55 懒省事的小明(优先队列)
- 现实迷途 第二十三章 火辣夏日
- mysql自动过滤特殊字符的解决方法
- 插入数据违反完整性约束(oracle)
- 基于Mysql C Api编写mysql客户端程序
- 微软数据库提供程序基类
- testopia2.4+bugzilla 4.0.6安装
- 浅谈过载保护
- 如何在15分钟内掌握JavaScript面向对象编程
- 使用主键和外键建表
- IOCP模型与网络编程
- go语言Exercise: Fibonacci closure
- 海量数据处理