• C 语言通用MySQL 功能增删查改功能.


    前提条件:Ubuntu 22.04.4 LTS、MSQL 8数据库

    并且已经安装MySQL 8 开发库。如果没有安装,可以查考:C 语言连接MySQL数据库

    项目要求:

    1、完成MySQL数据库增删改查通用功能封装

    2、编辑makefile 文件实现项目动态更新和快速编译

    项目结构:

    common_mysql.h 通用数据库基础功能

    1. #include
    2. // 数据库连接
    3. MYSQL* connectDB(const char *ip, const char *username, const char *password, const char *databasenName, unsigned int port);
    4. // SQL语句执行
    5. int executeQuery(MYSQL* conn, const char* query);
    6. // SQL 语句执行并返回查询结果
    7. void printResults(MYSQL* conn, const char* query);
    8. // 关闭数据库连接
    9. int closeConnectDB(MYSQL* conn);

    common_mmysql.c 通用数据库基础功能实现

    1. #include "common_mysql.h"
    2. #include <stdio.h>
    3. // 数据库连接
    4. MYSQL* connectDB(const char *ip, const char *username, const char *password, const char *databasenName, unsigned int port){
    5. MYSQL *conn = mysql_init(NULL);
    6. if (conn == NULL) {
    7. fprintf(stderr, "mysql_init() 初始化失败\n");
    8. return NULL;
    9. }
    10. if (mysql_real_connect(conn, ip, username, password, databasenName, port, NULL, 0) == NULL) {
    11. fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));
    12. mysql_close(conn);
    13. return NULL;
    14. }
    15. return conn;
    16. }
    17. // SQL 语句执行 0 =执行成功, 1= 执行失败
    18. int executeQuery(MYSQL* conn, const char* query){
    19. if (mysql_query(conn, query) != 0) {
    20. fprintf(stderr, "mysql_query() 失败: %s\n", mysql_error(conn));
    21. return 1;
    22. }
    23. return 0;
    24. }
    25. // SQL 语句执行并返回执行结果
    26. void printResults(MYSQL* conn, const char* query){
    27. if (mysql_query(conn, query) != 0) {
    28. fprintf(stderr, "mysql_query() 失败: %s\n", mysql_error(conn));
    29. return;
    30. }
    31. MYSQL_RES *result = mysql_store_result(conn);
    32. if (result != NULL) {
    33. MYSQL_ROW row;
    34. while ((row = mysql_fetch_row(result)) != NULL) {
    35. for (int i = 0; i < mysql_num_fields(result); i++) {
    36. printf("%s ", row[i] ? row[i] : "NULL");
    37. }
    38. printf("\n");
    39. }
    40. mysql_free_result(result);
    41. }
    42. }
    43. int closeConnectDB(MYSQL* conn){
    44. mysql_close(conn);
    45. return 0;
    46. }

    database_sys.c: 基于数据库通用功能应用

    1. #include
    2. #include "common_mysql.h"
    3. // 常量定义
    4. #define IP "192.168.60.94"
    5. #define USERNAME "root"
    6. #define PASSWORD "123456"
    7. #define DATABASENAME "base"
    8. #define PORT 3306
    9. int main(void){
    10. // 数据库连接
    11. MYSQL* connect = connectDB(IP, USERNAME, PASSWORD, DATABASENAME, PORT);
    12. // 判断数据连接是否为空
    13. if(connect == NULL){
    14. return 1;
    15. }
    16. // 执行SQL 语句
    17. printResults(connect, "select * from base_user");
    18. // 关闭数据库连接
    19. closeConnectDB(connect);
    20. return 0;
    21. }

    MakeFile 自动化编译文件

    1. SOURCES = $(wildcard *.c)
    2. OBJS = $(patsubst %.c,%.o,$(SOURCES))
    3. CC = gcc
    4. CFLAGS = -g
    5. TARGET = MySQLDemo
    6. # 通过mysql_config 命令查看MySQL 库文件地址
    7. LIB_PATH = -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lzstd -lssl -lcrypto -lresolv -lm
    8. $(TARGET) : $(OBJS)
    9. $(CC) $(CFLAGS) -o $@ $^ $(LIB_PATH)
    10. $(OBJS): %.o :%.c
    11. $(CC) $(CFLAGS) -c $< -o $@
    12. clean:
    13. rm -rf $(TARGET) $(OBJS)

    Ubuntu 命令控制台,查看MySQL 配置信息:

    1. wz2012@LAPTOP-8R0KHL88:~$ mysql_config
    2. Usage: /usr/bin/mysql_config [OPTIONS]
    3. Compiler: GNU 11.4.0
    4. Options:
    5. --cflags [-I/usr/include/mysql ]
    6. --cxxflags [-I/usr/include/mysql ]
    7. --include [-I/usr/include/mysql]
    8. --libs [-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lzstd -lssl -lcrypto -lresolv -lm]
    9. --libs_r [-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lzstd -lssl -lcrypto -lresolv -lm]
    10. --plugindir [/usr/lib/mysql/plugin]
    11. --socket [/var/run/mysqld/mysqld.sock]
    12. --port [0]
    13. --version [8.0.37]
    14. --variable=VAR VAR is one of:
    15. pkgincludedir [/usr/include/mysql]
    16. pkglibdir [/usr/lib/x86_64-linux-gnu]
    17. plugindir [/usr/lib/mysql/plugin]

    项目运行结果:

    1. wz2012@LAPTOP-8R0KHL88:/mnt/e/ubuntu_code/数据库管理系统$ ./MySQLDemo
    2. 1 31 张三修该 广东省 深圳市 福田区 NULL
    3. 2 19 李四 湖南省 长沙市 开福区 NULL

    至此,收工。

  • 相关阅读:
    undefined symbol: _ZN3c104impl8GPUTrace13gpu mmcv
    Android 自定义View - 柱状波形图 wave view
    小程序实现搜索功能续
    数组扁平化 和 线性结构(数组)转换树结构
    【微机原理|课程报告】计算器课设报告
    百度文心一言4.0抢先体验教程!
    颗粒状糖果(巧克力)包装机设计
    【目标跟踪】|stark配置 win otb
    计算机毕业设计(附源码)python智慧小区团购系统
    el-tree 懒加载的情况下 重新加载
  • 原文地址:https://blog.csdn.net/zhouzhiwengang/article/details/139840534