DSP学习 -- C语言实现MySQL数据库操作

如需转载请注明出处 https://juyou.blog.csdn.net/article/details/109259673

要实现在VS上使用C语言操作MySQL数据库。接下来看一下该怎么操作。

一、下载安装MySQL

1、下载

下载:MySQL官网
在这里插入图片描述
我下载是 MySQL Installer 8.0.22 手动安装版本。
在这里插入图片描述
点击不需要注册,即可下载。

2、安装

选择 Server only
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、include 和 lib

得到 include 和 lib

C:\Program Files\MySQL\MySQL Server 8.0\include
在这里插入图片描述
C:\Program Files\MySQL\MySQL Server 8.0\lib
在这里插入图片描述

二、navicat premium 安装

下载安装:navicat121_premium_cs

三、Visual studio 配置

1、放置 include 和 lib

点击 在文件资源管理器中打开文件夹, 将上面得到的 include 和 lib 放置到该文件夹下。

lib里其实只需要 libmysql.lib,然后再将 libmysql.dll 放置到生成exe的文件夹下。
在这里插入图片描述

2、配置 include 和 lib

添加 属性->C/C+±>常规->附加包含目录->include
在这里插入图片描述
添加 属性->链接器->常规->附加库目录->lib
在这里插入图片描述

四、C语言实现MySQL数据库操作

终于到重点了。

1、在 Navicat Premium 新建一个数据库

新建连接:

在这里插入图片描述
在这里插入图片描述

新建数据库:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、代码实现

工程:MySQL 测试


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <mysql.h>
#pragma comment(lib, "libmysql.lib")

MYSQL mysql;

typedef struct
{
    char Name[20];
    char Sex[20];
    int Age;
    int Sno;
    double Weight;
}Student;


void mysql_init_and_connect(void)
{
    char value = 1;
    mysql_init(&mysql);
    mysql_options(&mysql, MYSQL_OPT_RECONNECT, (char*)&value);
    if (!mysql_real_connect(&mysql, "localhost", "root", "123456", "abc_123", 0, NULL, 0))
    {
        printf("\n mysql connect error! \n");
    }
    else
    {
        printf("\n mysql connect sucessfully! \n");
    }
    mysql_set_character_set(&mysql, "gbk");
}

void mysql_create_table(MYSQL* mysql)
{
    char res;
    char query[512] = { 0 };
    sprintf(query, "%s", "create table student ( \
姓名 char(32) primary key, \
性别 char(32), \
年龄 int, \
学号 int, \
体重 double(32,3))");
    res = mysql_real_query(mysql, query, (unsigned long)(strlen(query) + 1));
    if (res)
    {
        printf("\n Create Table Failed: %s \n", mysql_error(mysql));
    }
    else
    {
        printf("\n Create Table Sucessfully! \n");
    }
}

void mysql_insert(MYSQL* mysql, Student* Stu)
{
    char res;
    char field[512] = { 0 };
    char message[512] = { 0 };
    char query[1024] = { 0 };
    sprintf(field, "%s", "insert into student values(%s)");
    sprintf(message, "\'%s\',\'%s\',%d,%d,%lf", Stu->Name,Stu->Sex,Stu->Age,Stu->Sno,Stu->Weight);
    sprintf(query, field, message);
    res = mysql_real_query(mysql, query, (unsigned long)(strlen(query)+1));
    if (res)
    {
        printf("\n Insert Failed: %s \n", mysql_error(mysql));
        char str[512] = {0 };
        char Faillog[512] = { 0 };
        sprintf(Faillog, "%s", "Table 'abc_123.student' doesn't exist");
        sprintf(str, "%s", mysql_error(mysql));
        if (strcmp(str, Faillog) == 0)
        {
            mysql_create_table(mysql);
            res = mysql_real_query(mysql, query, (unsigned long)(strlen(query) + 1));
            if (res)
            {
                printf("\n Insert Failed: %s \n", mysql_error(mysql));
            }
            else
            {
               printf("\n Insert Sucessfully! \n");
            }
        }
    }
    else
    {
        printf("\n Insert Sucessfully! \n");
    }
}

void mysql_select(MYSQL* mysql)
{
    char res;
    MYSQL_RES* mysql_res;
    MYSQL_ROW mysql_row;
    char query[512] = { 0 };
    char task[512] = { 0 };
    sprintf(query, "%s", "select * from student");
    res = mysql_real_query(mysql, query, (unsigned long)(strlen(query) + 1));
    if (res)
    {
        printf("\n Select Failed: %s \n", mysql_error(mysql));
    }
    else
    {
        printf("\n Select Sucessfully! \n");
    }
    mysql_res = mysql_store_result(mysql);
    if (NULL == mysql_res)
    {
        printf("\n Mysql Store Result Failed: %s \n", mysql_error(mysql));
    }
    else
    {
        while (mysql_row = mysql_fetch_row(mysql_res))
        {
            //for (res = 1;res < mysql_num_fields(res);res++)
            //{
            //    printf("%s", mysql_row[res]);
            //}
            printf("%s\t", mysql_row[0]);
            printf("%s\t", mysql_row[1]);
            printf("%d\t", atoi(mysql_row[2]));
            printf("%d\t", atoi(mysql_row[3]));
            printf("%lf\n", atof(mysql_row[4]));
        }
        mysql_free_result(mysql_res);
    }
}

int main(void)
{
    Student Stu;
    strcpy(Stu.Name, "小明");
    strcpy(Stu.Sex, "男");
    Stu.Age = 18;
    Stu.Sno = 25;
    Stu.Weight = 62.5;

    mysql_init_and_connect();
    mysql_insert(&mysql, &Stu);
    mysql_select(&mysql);
    getchar();
    return 0;
}

3、测试结果

在这里插入图片描述
在这里插入图片描述

五、MySQL学习

现在该讲一下什么是MySQL了,上面这些MySQL接口又是怎么用的。
参看:SQL 教程

如需转载请注明出处 https://juyou.blog.csdn.net/article/details/109259673

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:上身试试 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值