C整合MySQL增删查改

帮助小白理解,能打注释的地方都打上了,C语言就是调用函数,而Java把这些函数都封装了,这是最大的不同

喜欢就点个赞吧,收藏不迷路

数据库表

-- MySQL dump 10.13  Distrib 8.0.30, for Win64 (x86_64)
--
-- Host: 192.168.154.141    Database: school
-- ------------------------------------------------------
-- Server version    8.0.31

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `Student_info`
--

DROP TABLE IF EXISTS `Student_info`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `Student_info` (
  `ID` int NOT NULL,
  `Name` varchar(10) NOT NULL,
  `Sex` varchar(10) NOT NULL,
  `Age` int NOT NULL,
  `StudyDate` date DEFAULT NULL,
  `Major` varchar(10) NOT NULL,
  `Class` int NOT NULL,
  `Address` varchar(15) DEFAULT NULL,
  `Tel` varchar(11) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `Student_info`
--

LOCK TABLES `Student_info` WRITE;
/*!40000 ALTER TABLE `Student_info` DISABLE KEYS */;
INSERT INTO `Student_info` VALUES (10004,'pop','girl',20,NULL,'NET',2001,'','444444'),(10005,'smith','girl',21,NULL,'DL',2101,'jinan','555555'),(10006,'bob','bog',23,NULL,'PS',2301,'shanghai','123456'),(10007,'joh','boy',23,NULL,'PS',2204,'chengdu','1234566');
/*!40000 ALTER TABLE `Student_info` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2023-02-28  8:23:57

c语言

#include <stdio.h>
#include <netinet/in.h>
#include <unistd.h>
#include <sys/socket.h>
#include <stdlib.h>
#include "/usr/include/linux/socket.h"
#include <string.h>
#include <arpa/inet.h>
#include <time.h>
#include <netinet/tcp.h>
#include <sys/types.h>
#include <ctype.h>
#include <signal.h>
#include <stdbool.h>
#include <fcntl.h>
#include <stdarg.h>
#include </usr/local/mysql/include/mysql.h>

int i;
char query[100];
int num_fields;      // 字段
MYSQL_ROW row;       // 保存行记录信息
MYSQL_FIELD *fields; // 保存字段名字信息

// 打印sql结果
void show_result(MYSQL_RES *result)
{
    num_fields = mysql_num_fields(result);
    fields = mysql_fetch_fields(result);

    // 输出数据表表头
    for (i = 0; i < num_fields; i++)
    {
        printf("%s\t", fields[i].name);
    }
    printf("\n");

    // 循环输出内容
    while ((row = mysql_fetch_row(result)))
    {
        for (i = 0; i < num_fields; i++)
        {
            // 看是否为空

            printf("%s\t", row[i] ? row[i] : "NULL");
        }
        printf("\n");
    }
}

// 查询指定
void SelectOne(MYSQL *mysql, char SelectById[])
{
    printf("======================================\n");
    sprintf(query, "select Name,Sex,Age,StudyDate,Major,Class,Address,Tel from school.Student_info where ID = '%s'",SelectById);
    if (mysql_query(mysql, query) == 0)
    {
        printf("查询成功\n");
    }
    else
    {
        printf("错误!\n");
    }
    MYSQL_RES *result = mysql_store_result(mysql);
    if (result != NULL)
    {
        // 需要打印结果集
        show_result(result);
        mysql_free_result(result); // 释放结果集
    }
    mysql_close(mysql);
    printf("======================================\n");
}

// 查询所有
void SelectAll(MYSQL *mysql)
{
    printf("======================================\n");
    sprintf(query, "SELECT * FROM school.Student_info");
    if (mysql_query(mysql, query) == 0)
    {
        printf("查询成功\n");
    }
    else
    {
        printf("查询失败!\n");
    }
    MYSQL_RES *result = mysql_store_result(mysql);
    if (result != NULL)
    {
        // 需要打印结果集
        show_result(result);
        mysql_free_result(result); // 释放结果集
    }
    mysql_close(mysql);
}

// 删除指定
void DeleteOne(MYSQL *mysql, char DeleteById[])
{
    printf("======================================\n");

    sprintf(query, "delete from school.Student_info where ID='%s';", DeleteById);
    if (mysql_query(mysql, query))
    {
        printf("删除失败:%s\n", mysql_error(mysql));
    }
    else
    {
        printf("删除成功\n");
    }
    printf("======================================\n");
}

// 更新指定
void UpdateOne(MYSQL *mysql, char Name[], char Sex[], int Age[], char StudyDate[], char Major[], int Class[] ,char Address[],char Tel[],char UpdateById[])
{

    printf("======================================\n");
    sprintf(query, "update school.Student_info set Name='%s',Sex='%s',Age='%d',StudyDate='%s',Major='%s',Class='%d',Address='%s',Tel='%s' where UpdateById ='%s'", Name, Sex, Age, StudyDate, Major, Class,Address,Tel,UpdateById);
    if (mysql_query(mysql, query))
    {
        printf("更新失败!\n");
    }
    else
    {
        printf("更新了%d条数据!\n", mysql_affected_rows(mysql));
    }
    printf("======================================\n");
}

// 插入记录
void InsertOne(MYSQL *mysql,  char Name[], char Sex[], int Age[], char StudyDate[], char Major[], int Class[] ,char Address[],char Tel[],char InsertById[])
{
    printf("======================================\n");
    printf("要更新的Id:%s\n", InsertById);
    sprintf(query, "INSERT INTO school.Student_info (ID,Name,Sex,Age,StudyDate,Major,Class,Address,Tel) VALUES ('%s', '%s', '%s', '%d', '%s','%s','%d','%s','%s')",InsertById,Name,Sex,Age,StudyDate,Major,Class,Address,Tel);
    if (mysql_query(mysql, query))
    {
        printf("插入失败:%s\n", mysql_error(mysql));
    }
    else
    {
        int a = mysql_affected_rows(mysql);
        printf("插入成功%d条数据!\n", mysql_affected_rows(mysql));
    }

    printf("======================================\n");
}

int main(int argc, const char *argv[])
{
    char DeleteById[12], UpdateById[12], SelectById[12], InsertById[12], Name[7],Sex[7],Age[7],StudyDate[7],Major[7],Class[7],Address[7],Tel[7];

    // 默认数据库连接
    char OLD_HOST[255] = "192.168.154.141";
    char OLD_USER[255] = "root";
    char OLD_PASSWORD[255] = "123456";
    char OLD_DBNAME[255] = "school";

    // 打印输出
    printf("||===========================MySQL数据库默认配置========================||\n");
    printf("|| 数据库主机地址---------------------------------------%s ||\n", &OLD_HOST);
    printf("|| 用户名----------------------------------------------------------%s ||\n", &OLD_USER);
    printf("|| 密码----------------------------------------------------------%s ||\n", &OLD_PASSWORD);
    printf("|| 数据库----------------------------------------------------------%s ||\n", &OLD_DBNAME);
    printf("||======================================================================||\n");
    MYSQL mysql_con;
    MYSQL *mysql = mysql_init(&mysql_con);
    if (mysql == NULL)
    {
        printf("init err! 数据库初始化错误!\n");
    }
    if (mysql_real_connect(mysql, OLD_HOST, OLD_USER, OLD_PASSWORD, OLD_DBNAME, 3306, NULL, 0) == NULL)
    {
        printf("  connect err! 默认数据库 %s 连接失败!\n", OLD_HOST);
        return -1;
    }
    printf("%s", mysql_error(mysql));
    printf("默认数据库 %s 连接测试成功!\n", OLD_HOST);
    printf("||=============================MySQL数据库操作==========================||\n");
    printf("|| (1)查询全表                                                          ||\n");
    printf("|| (2)增加记录                                                          ||\n");
    printf("|| (3)删除指定记录                                                      ||\n");
    printf("|| (4)更新指定记录                                                      ||\n");
    printf("|| (5)查询指定记录                                                      ||\n");
    printf("||======================================================================||\n");
    int a, name;
    printf("请选择操作: ");
    scanf("%d", &a);

    switch (a)
    {
    case 1:
        SelectAll(mysql);
        break;
    case 2:
        printf("请输入 ID,Name,Sex,Age,StudyDate,Major,Class,Address,Tel (按回车换行):\n");
        scanf("%s %s %s %d %s %s %d %s %s", &InsertById,&Name,&Sex,&Age,&StudyDate,&Major,&Class,&Address,&Tel);
        InsertOne(mysql,InsertById,Name,Sex,Age,StudyDate,Major,Class,Address,Tel);
        break;
    case 3:
        printf("要删除的Id为:");
        scanf("%s", &DeleteById);
        DeleteOne(mysql, DeleteById);
        break;
    case 4:
        printf("请输入要更新的Id:");
        scanf("%s", &UpdateById);
        printf("请输入Name,Sex,Age,StudyDate,Major,Class,Address,Tel (按回车换行)\n");
        scanf("%s %s %d %s %s %d %s %s",&Name,&Sex,&Age,&StudyDate,&Major,&Class,&Address,&Tel);
        UpdateOne(mysql, Name, Sex, Age, StudyDate, Major, Class,Address,Tel,UpdateById);
        break;
    case 5:
        printf("要查询的Id为:");
        scanf("%s", &SelectById);
        SelectOne(mysql, SelectById);
        break;
    default:
        printf("输入错误!\n");
        break;
    }
}

喜欢就点个赞吧,收藏不迷路

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DF10F-0001A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值