当前位置: 首页 > article >正文

实验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

http://www.kler.cn/a/448845.html

相关文章:

  • V900新功能-电脑不在旁边,通过手机给PLC远程调试网关配置WIFI联网
  • esp8266_TFTST7735语音识别UI界面虚拟小助手
  • 增量训练(持续学习)
  • 《计算机组成及汇编语言原理》阅读笔记:p48-p81
  • Java 中 Socket 技术全面解析
  • GUI07-学工具栏,懂MVC
  • springboot453工资信息管理系统(论文+源码)_kaic
  • 解决Vmware虚拟机系统镜像无法解析DNS
  • 【Java基础面试题034】Java泛型擦除是什么?
  • 基于大语言模型的多代理下一代制造系统能灵活动态管理制造资源的高效调度方法
  • 一种统计torch内部计算过程算子输入输出信息的方法
  • (css)鼠标移入或点击改变背景图片
  • windows 下使用WLS2 编译aosp Android14并刷机到pixle 5a
  • 鱼跃医疗获评2024年国家级“绿色工厂”,以绿色制造树立行业标杆
  • 《 火星人 》
  • 基础爬虫案例实战
  • 【Threejs】从零开始(六)--GUI调试开发3D效果
  • C05S13-MySQL数据库备份与恢复
  • 运用软件开发的三层结构创建图书馆查书
  • STM32-KEIL5中相关设置
  • vue 文本域 展示的内容格式要和填写时保持一致
  • 「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
  • ctf中遇到exec和shell_exec的回显问题
  • 基于SpringBoot的“家具销售电商平台”的设计与实现(源码+数据库+文档+PPT)
  • Stream流的使用
  • 【Python 】循环