69.笔记 MySQL学习——C编写MySQL程序二连接服务器
实现连接MySQL服务器、断开连接和退出。
代码如下:
#include <my_global.h>
#include <my_sys.h>
#include <mysql.h>
static char *opt_host_name = NULL; /* server host (default=localhost) */
static char *opt_user_name = NULL; /* username (default=login name) */
static char *opt_password = NULL; /* password (default=none) */
static unsigned int opt_port_num = 0; /* port number(use built-in value) */
static char *opt_socket_name = NULL; /* socket name (use built-in value) */
static char *opt_db_name = NULL; /* database name (default=none) */
static unsigned int opt_flags = 0; /* connection flags (none) */
static MYSQL *conn; /* pointer to connectionhandler */
int
main (int argc, char *argv[])
{
MY_INIT (argv[0]);
/* initializeclient library */
if(mysql_library_init (0, NULL, NULL))
{
fprintf(stderr, "mysql_library_init() failed\n");
exit (1);
}
/* initializeconnection handler */
conn =mysql_init (NULL);
if (conn ==NULL)
{
fprintf(stderr, "mysql_init() failed (probably out of memory)\n");
exit (1);
}
/* connect toserver */
if(mysql_real_connect (conn, opt_host_name, opt_user_name, opt_password,
opt_db_name, opt_port_num, opt_socket_name, opt_flags) == NULL)
{
fprintf(stderr, "mysql_real_connect() failed\n");
mysql_close(conn);
exit (1);
}
/* disconnectfrom server, terminate client library */
mysql_close(conn);
mysql_library_end ();
exit (0);
}
进行编译
# gcc `mysql_config --include``mysql_config --libs` connect1.c
代码说明
其中函数mysql_init函数获得一个连接处理器
函数mysql_real_connect函数,建立与服务器的连接,有很多参数:指向连接处理器的指针,服务器主机,使用MYSQL账户的用户名和密码,数据库名称指定的数据库将是链接建立之后的默认数据库,端口号,套接字文件名,标志值。
终止连接使用mysql_close函数。
MY_INIT()是一个初始化宏,把一个全局变量设置成程序名
Mysql_library_init会初始化客户端开发库,在调用其他mysql_xxx函数之前调用它。
Mysql_library_end会终止使用客户端开发库,并执行一些必要的清理工作。
注意
代码中包含硬编码值,会暴露密码。虽然编译成了二进制可执行文件,但是通过执行strings工具可以查看到密码。
测试
直接执行,如果数据库没开,则报错如下:
# ./a.out
mysql_real_connect() failed
如果没有任何输出,则表明连接成功。