您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Linux下C语言连接MySQL_MySQL

2024/4/19 15:30:05发布10次查看
bitscn.com
首先保证安装: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 #include #include mysql.hint 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 #include #include mysql.h#include errmsg.h#include mysqld_error.hvoid 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;}
bitscn.com
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product