1. C语言连接MySQL
- 安装 MySQL 客户端开发库: 首先,您需要确保已安装 MySQL 的客户端开发库。在 CentOS 上,您可以使用
yum
或dnf
命令来安装这些库。
sudo yum install mysql-devel
-
编写代码: 创建一个名为
mysql_connect.c
的文件,并输入以下代码:-
host
:指定要连接的 MySQL 服务器的主机名或 IP 地址 -
user
:用于登录数据库的用户名 -
password
:对应于user
的密码,用于身份验证 -
database
:要连接的数据库名称。如果成功连接,后续操作将针对这个数据库进行。 -
your_table
:要连接的数据库中的表名。
-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
// 初始化MySQL环境
conn = mysql_init(NULL);
if (conn == NULL) {
fprintf(stderr, "mysql_init() failed\n");
return EXIT_FAILURE;
}
// 连接到数据库
if (mysql_real_connect(conn, "localhost", "username", "password",
"database_name", 0, NULL, 0) == NULL) {
fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));
mysql_close(conn);
return EXIT_FAILURE;
}
// 执行查询
if (mysql_query(conn, "SELECT * FROM your_table")) {
fprintf(stderr, "SELECT * FROM your_table failed. Error: %s\n",
mysql_error(conn));
mysql_close(conn);
return EXIT_FAILURE;
}
res = mysql_store_result(conn);
if (res == NULL) {
fprintf(stderr, "mysql_store_result() failed. Error: %s\n",
mysql_error(conn));
mysql_close(conn);
return EXIT_FAILURE;
}
// 输出结果集
while ((row = mysql_fetch_row(res)) != NULL) {
for (unsigned int i = 0; i < mysql_num_fields(res); i++) {
printf("%s ", row[i] ? row[i] : "NULL");
}
printf("\n");
}
// 清理资源
mysql_free_result(res);
// 关闭数据库连接
mysql_close(conn);
return EXIT_SUCCESS;
}
- 编译代码: 使用
gcc
编译您的程序,并链接 MySQL 库。
gcc -std=c99 -o mysql_connect mysql_connect.c $(mysql_config --cflags) $(mysql_config --libs)
- 运行程序: 确保您的 MySQL 服务正在运行,然后执行生成的可执行文件:
./mysql_connect
- 运行结果: 成功输出数据库
mydatabase
中的employees
表中的内容
1 Alice Smith Software Engineer
2 Bob Johnson Data Analyst
3 Charlie Brown Product Manager
2. MySQL接口
mysql_init()
:初始化一个MYSQL对象,用于存储连接信息。
语法:
MYSQL *mysql_init(MYSQL *mysql);
mysql_real_connect()
:建立与MySQL服务器的连接。
语法:
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,
const char *user,
const char *passwd,
const char *db,
unsigned int port,
const char *unix_socket,
unsigned long clientflag);
mysql_query()
:向MySQL服务器发送一条 SQL 查询。
语法:
int mysql_query(MYSQL *mysql, const char *q);
mysql_store_result()
:获取查询结果集。
语法:
MYSQL_RES *mysql_store_result(MYSQL *mysql);
mysql_fetch_row()
:从结果集中获取下一行数据。
语法:
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
mysql_free_result()
:释放结果集占用的内存。
语法:
void mysql_free_result(MYSQL_RES *result);
mysql_close()
:关闭与MySQL服务器的连接。
语法:
void mysql_close(MYSQL *mysql);