实验13 C语言连接和操作MySQL数据库
一、安装MySQL
1、使用包管理器安装MySQL
sudo apt update
sudo apt install mysql-server
2、启动MySQL服务:
sudo systemctl start mysql
3、检查MySQL服务状态:
sudo systemctl status mysql
二、安装MySQL开发库
sudo apt-get install libmysqlclient-dev
三、程序编写
#include <mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
const char *server = "localhost";
const char *user = "root";
const char *password = ""; // 替换为你的MySQL root密码
const char *database = "testdb"; // 替换为你的数据库名
char query[256];
// 初始化MySQL连接
conn = mysql_init(NULL);
if (!conn) {
fprintf(stderr, "mysql_init() failed\n");
exit(1);
}
// 连接到MySQL服务器
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
// 创建数据库表
sprintf(query, "CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255), password VARCHAR(255))");
if (mysql_query(conn, query)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
// 插入数据
sprintf(query, "INSERT INTO users (username, password) VALUES ('user1', 'pass1')");
if (mysql_query(conn, query)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
// 查询数据
sprintf(query, "SELECT * FROM users");
if (mysql_query(conn, query)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_store_result(conn);
printf("ID\tUSERNAME\tPASSWORD\n");
while ((row = mysql_fetch_row(res)) != NULL) {
printf("%s\t%s\t%s\n", row[0], row[1], row[2]);
}
mysql_free_result(res);
// 关闭MySQL连接
mysql_close(conn);
return 0;
}
编译C程序
使用gcc编译你的C程序,并链接MySQL客户端库:
gcc -o mysql_program your_program.c $(mysql_config --cflags --libs)
数据库准备
mysql -u root
CREATE DATABASE testdb;
运行
服务
MySQL 开机自启
启用自启
sudo systemctl enable mysql
禁用自启
sudo systemctl disable mysql
MySQL 手动启用
启动服务
sudo systemctl start mysql
# 或者
sudo systemctl start mysql.service
# 或者
sudo systemctl start mariadb.service
停止服务
sudo systemctl stop mysql
# 或者
sudo systemctl stop mysql.service
# 或者
sudo systemctl stop mariadb.service
查看MySQL服务状态
sudo systemctl status mysql
# 或者
sudo systemctl status mysql.service
# 或者
sudo systemctl status mariadb.service