Documentation Home

5.4.45 mysql_library_init()

int
mysql_library_init(int argc,
                   char **argv,
                   char **groups)

描述

在调用任何其他 MySQL 函数之前调用此函数来初始化 MySQL 客户端库。

笔记

为避免应用程序使用完库后发生内存泄漏(例如,关闭与服务器的连接后),请务必 mysql_library_end() 显式调用。这使得能够执行内存管理以清理和释放库使用的资源。参见 第 5.4.44 节,“mysql_library_end()”

在非多线程环境中, mysql_library_init()可以省略对 的调用,因为mysql_init() 会在必要时自动调用它。但是, mysql_library_init()在多线程环境中不是线程安全的,因此mysql_init()调用 mysql_library_init(). 您必须 mysql_library_init()在生成任何线程之前调用,或者使用互斥锁来保护调用,无论您是调用 mysql_library_init()还是间接通过 mysql_init(). 在任何其他客户端库调用之前执行此操作。

argc和参数未使用argvgroups在较旧的 MySQL 版本中,它们用于链接到不再受支持的嵌入式服务器的应用程序。现在的调用应该写成 mysql_library_init(0, NULL, NULL).

#include <mysql.h>
#include <stdlib.h>

int main(void) {
  if (mysql_library_init(0, NULL, NULL)) {
    fprintf(stderr, "could not initialize MySQL client library\n");
    exit(1);
  }

  /* Use any MySQL API functions here */

  mysql_library_end();

  return EXIT_SUCCESS;
}

返回值

零成功。如果发生错误,则非零。