来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] 本文出自 http: blog csdn net shuangde800首先保证安装:1:安装MySQL:sudo apt-get install mysql-server mysql-client2:安装MySQL开发包:sudo apt-get install libmysqlclient...
首先保证安装:1:安装MySQL:sudo apt-get install mysql-server mysql-client 2:安装MySQL开发包:sudo apt-get install libmysqlclient15-dev 此时需要用到的头文件会出现在/usr/include/mysql/里C语言连接MySQL数据库此包含两个步骤: 1. 使用函数mysql_init初始化一个连接句柄结构. mysql_init的函数定义如下:MYSQL * mysql_init(MYSQL *);通常传递NULL给这个例程,他会返回一个指向新分配的连接句柄结构的指针。如果传递一个已有的结构,它将会重新初始化。这个例程在出错时返回NULL. 2. 实际进行连接 目前只是分配和初始化了一个结构,仍然需要使用mysql_real_connect来向一个连接提供参数, mysql_real_connect的函数定义: MYSQL* mysql_real_connect(MYSQL* connection, const char *server_host, const char *sql_user_name, const char *sql_password, const char *db_name, unsigned int port_number, const char *unix_socket_name, unsigned int flags); 指针connection必须指向已经被mysql_init初始化过的结构。 注意server_host既可以是主机名,也可以是IP地址。如果连接本地,可以制定localhost来优化。 sql_user_name和sql_password的含义和它们的字面意思一样。如果登录名为NULL,则假设登录名为当前Linux用户的登录ID,如果密码为NULL,则假设密码为空。 port_number和unix_socket_name应该分别为0和NULL,除非你改变了MySQL安装的默认设置。他们将默认使用合适的值。 最后,flags参数用来对一些定义的位模式进行OR操作,使得改变使用协议的某些特性。 如果无法连接,则返回NULL。mysql_error函数可以提供有帮助的信息。 3. 使用完连接,通常在程序退出前,要调用函数mysql_close; mysql_close的函数定义: void mysql_close(MYSQL *connection);将关闭连接。 连接MySQL的示例: #include <stdio.h> #include <stdlib.h> #include "mysql.h" int main (int argc, char *argv[]) { MYSQL *conn; // 步骤1: 初始化连接句柄 conn = mysql_init(NULL); if (conn == NULL) { // 如果返回NULl说明初始化失败 printf("mysql_init failed!\n"); return EXIT_FAILURE; } // 步骤2:实际进行连接 // 参数分别为,conn连接句柄,host是MySQL所在主机或地址,user用户名,password密码,database_name数据库名,后面的都是默认 conn = mysql_real_connect(conn, "host", "user", "password", "database_name", 0, NULL, 0); if (conn) { // 连接成功 printf("Connection success!\n"); } else { printf("Connection failed!\n"); } // 步骤3: 退出前关闭连接 mysql_close(conn); return 0; } 编译和运行: gcc -I/usr/include/mysql test.c -L/usr/lib/mysql -lmysqlclient -o app 错误处理错误处理的两个函数: // 返回错误码 unsigned int mysql_errno(MYSQL *connection); // 返回错误详细信息 char* mysql_error(MYSQL *connection);注意,当调用conn = mysql_real_connect(...), 时会遇到一个问题,因为它在失败时返回NULL指针,并没有提供一个错误码。但如果是将句柄作为一个变量,那么即使mysql_real_connect失败,也仍然能够处理它。 #include <stdio.h> #include <stdlib.h> #include "mysql.h" #include "errmsg.h" #include "mysqld_error.h" void Error(MYSQL* conn) { printf("Connection error %d: %s\n", mysql_errno(conn), mysql_error(conn)); } int main (int argc, char *argv[]) { MYSQL conn; // 是变量而不是指针 mysql_init(&conn); // 注意取地址符& if (mysql_real_connect(&conn, "192.168.137.246", "root", "123456", "test", 0, NULL, 0)) { printf("Connection success!\n"); mysql_close(&conn); } else { fprintf(stderr, "Connection failed!\n"); if (mysql_errno(&conn)) { fprintf(stderr, "Connection error %d: %s\n", mysql_errno(&conn), mysql_error(&conn)); } } return EXIT_SUCCESS; } |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com