并且已经安装MySQL 8 开发库。如果没有安装,可以查考:C 语言连接MySQL数据库
1、完成MySQL数据库增删改查通用功能封装
2、编辑makefile 文件实现项目动态更新和快速编译
common_mysql.h 通用数据库基础功能
- #include
-
- // 数据库连接
- MYSQL* connectDB(const char *ip, const char *username, const char *password, const char *databasenName, unsigned int port);
-
- // SQL语句执行
- int executeQuery(MYSQL* conn, const char* query);
-
- // SQL 语句执行并返回查询结果
- void printResults(MYSQL* conn, const char* query);
-
- // 关闭数据库连接
- int closeConnectDB(MYSQL* conn);
common_mmysql.c 通用数据库基础功能实现
- #include "common_mysql.h"
- #include <stdio.h>
-
- // 数据库连接
- MYSQL* connectDB(const char *ip, const char *username, const char *password, const char *databasenName, unsigned int port){
- MYSQL *conn = mysql_init(NULL);
-
- if (conn == NULL) {
- fprintf(stderr, "mysql_init() 初始化失败\n");
- return NULL;
- }
-
- if (mysql_real_connect(conn, ip, username, password, databasenName, port, NULL, 0) == NULL) {
- fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));
- mysql_close(conn);
- return NULL;
- }
-
- return conn;
- }
-
- // SQL 语句执行 0 =执行成功, 1= 执行失败
- int executeQuery(MYSQL* conn, const char* query){
- if (mysql_query(conn, query) != 0) {
- fprintf(stderr, "mysql_query() 失败: %s\n", mysql_error(conn));
- return 1;
- }
-
- return 0;
- }
- // SQL 语句执行并返回执行结果
- void printResults(MYSQL* conn, const char* query){
- if (mysql_query(conn, query) != 0) {
- fprintf(stderr, "mysql_query() 失败: %s\n", mysql_error(conn));
- return;
- }
-
- MYSQL_RES *result = mysql_store_result(conn);
- if (result != NULL) {
- MYSQL_ROW row;
- while ((row = mysql_fetch_row(result)) != NULL) {
- for (int i = 0; i < mysql_num_fields(result); i++) {
- printf("%s ", row[i] ? row[i] : "NULL");
- }
- printf("\n");
- }
- mysql_free_result(result);
- }
- }
-
-
- int closeConnectDB(MYSQL* conn){
- mysql_close(conn);
- return 0;
- }
-
-
-
-
-
-
database_sys.c: 基于数据库通用功能应用
- #include
- #include "common_mysql.h"
-
- // 常量定义
- #define IP "192.168.60.94"
- #define USERNAME "root"
- #define PASSWORD "123456"
- #define DATABASENAME "base"
- #define PORT 3306
-
- int main(void){
- // 数据库连接
- MYSQL* connect = connectDB(IP, USERNAME, PASSWORD, DATABASENAME, PORT);
-
- // 判断数据连接是否为空
- if(connect == NULL){
- return 1;
- }
-
- // 执行SQL 语句
- printResults(connect, "select * from base_user");
-
- // 关闭数据库连接
- closeConnectDB(connect);
- return 0;
- }
- SOURCES = $(wildcard *.c)
- OBJS = $(patsubst %.c,%.o,$(SOURCES))
- CC = gcc
- CFLAGS = -g
- TARGET = MySQLDemo
-
- # 通过mysql_config 命令查看MySQL 库文件地址
- LIB_PATH = -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lzstd -lssl -lcrypto -lresolv -lm
-
- $(TARGET) : $(OBJS)
- $(CC) $(CFLAGS) -o $@ $^ $(LIB_PATH)
- $(OBJS): %.o :%.c
- $(CC) $(CFLAGS) -c $< -o $@
-
- clean:
- rm -rf $(TARGET) $(OBJS)
Ubuntu 命令控制台,查看MySQL 配置信息:
- wz2012@LAPTOP-8R0KHL88:~$ mysql_config
- Usage: /usr/bin/mysql_config [OPTIONS]
- Compiler: GNU 11.4.0
- Options:
- --cflags [-I/usr/include/mysql ]
- --cxxflags [-I/usr/include/mysql ]
- --include [-I/usr/include/mysql]
- --libs [-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lzstd -lssl -lcrypto -lresolv -lm]
- --libs_r [-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lzstd -lssl -lcrypto -lresolv -lm]
- --plugindir [/usr/lib/mysql/plugin]
- --socket [/var/run/mysqld/mysqld.sock]
- --port [0]
- --version [8.0.37]
- --variable=VAR VAR is one of:
- pkgincludedir [/usr/include/mysql]
- pkglibdir [/usr/lib/x86_64-linux-gnu]
- plugindir [/usr/lib/mysql/plugin]
项目运行结果:
- wz2012@LAPTOP-8R0KHL88:/mnt/e/ubuntu_code/数据库管理系统$ ./MySQLDemo
- 1 31 张三修该 广东省 深圳市 福田区 NULL
- 2 19 李四 湖南省 长沙市 开福区 NULL
至此,收工。