实验13 C语言连接和操作MySQL数据库

发布于:2024-12-18 ⋅ 阅读:(13) ⋅ 点赞:(0)

一、安装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