C语言连接MySQL(Windows)

MySQL的安装&&C语言连接MySQL

  • 一、MySQL的安装
    • 1.MySQL安装包
    • 2.MySQL的安装
    • 3.MySQL字符集的配置(可以解决数据库无法存入中文的问题)
  • C语言连接MySQL
    • 1.用vs创建一个C语言的项目
    • 2.打开项目的位置
    • 3.引入文件
    • 4.测试代码的编写

一、MySQL的安装

1.MySQL安装包

百度网盘链接: mysql-installer-community-5.7.40.0 (直接点击蓝色字体即可) 提取码:1111

2.MySQL的安装

1.打开下载好的安装包。
在这里插入图片描述
2.
C语言连接MySQL(Windows)_第1张图片
3.
C语言连接MySQL(Windows)_第2张图片
4.
C语言连接MySQL(Windows)_第3张图片
C语言连接MySQL(Windows)_第4张图片
C语言连接MySQL(Windows)_第5张图片
5.
C语言连接MySQL(Windows)_第6张图片
C语言连接MySQL(Windows)_第7张图片
C语言连接MySQL(Windows)_第8张图片
C语言连接MySQL(Windows)_第9张图片
C语言连接MySQL(Windows)_第10张图片
C语言连接MySQL(Windows)_第11张图片
C语言连接MySQL(Windows)_第12张图片
C语言连接MySQL(Windows)_第13张图片
C语言连接MySQL(Windows)_第14张图片
C语言连接MySQL(Windows)_第15张图片
C语言连接MySQL(Windows)_第16张图片
C语言连接MySQL(Windows)_第17张图片
到这里MySQL安装完成C语言连接MySQL(Windows)_第18张图片

3.MySQL字符集的配置(可以解决数据库无法存入中文的问题)

1.打开安装的MySQL
C语言连接MySQL(Windows)_第19张图片
2.登录MySQLC语言连接MySQL(Windows)_第20张图片
3.查看字符集。
show variables like 'character_set_%';
C语言连接MySQL(Windows)_第21张图片
4.将字符集设置为utf-8.
(1)C:\ProgramData\MySQL\MySQL Server 5.7在电脑上打开这个路径。
C语言连接MySQL(Windows)_第22张图片
C语言连接MySQL(Windows)_第23张图片
在这个地方的下一行添加
default-character-set=utf8
C语言连接MySQL(Windows)_第24张图片
在[mysqld]这个地方的下一行添加
character-set-server=utf8
C语言连接MySQL(Windows)_第25张图片
按ctr+s保存。
然后关闭MySQL命令行窗口,打开任务管理器。右击重启MySQL服务
C语言连接MySQL(Windows)_第26张图片
然后再次打开MySQL,查看字符集。
C语言连接MySQL(Windows)_第27张图片
到这里MySQL的安装就完成了。

C语言连接MySQL

1.用vs创建一个C语言的项目

2.打开项目的位置

C语言连接MySQL(Windows)_第28张图片

3.引入文件

打开MySQL的安装路径,如果是按这篇博客安装的MySQL,安装路径在:C:\Program Files 下 找到MySQL文件夹打开
找到如下位置:C语言连接MySQL(Windows)_第29张图片
1.第一步先复制include文件夹
C语言连接MySQL(Windows)_第30张图片
2.粘贴到创建的C语言项目文件夹下,并修改文件夹名为mysql
C语言连接MySQL(Windows)_第31张图片
C语言连接MySQL(Windows)_第32张图片

3.进入MySQL安装目录下的lib
C语言连接MySQL(Windows)_第33张图片
将这两个依赖库复制粘贴到C语言项目文件夹下C语言连接MySQL(Windows)_第34张图片
最后项目文件夹中会多出1个文件夹,两个依赖库
C语言连接MySQL(Windows)_第35张图片

4.测试代码的编写

mysql C语言 API函数查询网址: https://www.mysqlzh.com/api/1.html
注意
这段代码的测试前一定要先在MySQL数据库中创建一个linkgame数据库和game_users表,表有三个字段。如下

CREATE DATABASE linkgame;
CREATE TABLE game_users(
id CHAR(10) KEY,
uname CHAR(20) NOT NULL,
score INT
);

对表操作测试代码,代码在vs下运行时需要切换到64位平台上,连接数据库的密码和数据库的名称根据自己的需求来修改。

#define _CRT_SECURE_NO_WARNINGS 1

#include 
#include 
#include 
/*引入连接Mysql的头文件和lib包*/
#include "mysql/mysql.h"
#pragma comment(lib,"libmysql")

/*定义一些数据库连接需要的宏*/
#define HOST "localhost" /*MySql服务器地址*/
#define USERNAME "root" /*用户名*/
#define PASSWORD "root" /*数据库连接密码*/
#define DATABASE "linkgame" /*需要连接的数据库*/

// 执行sql语句的函数
void exeSql(char* sql) {
    MYSQL my_connection; /*数据库连接*/
    int res;  /*执行sql语句后的返回标志*/
    MYSQL_RES* res_ptr; /*执行结果*/
    MYSQL_ROW result_row; /*按行返回查询信息*/
    MYSQL_FIELD* field;   /*返回表字段*/
    int row, column; /* 定义行数,列数*/
    mysql_init(&my_connection);
    if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE, 0, NULL, CLIENT_FOUND_ROWS))
    {
        //printf("数据库连接成功!");
        /*vs默认编码为 gbk 防止乱码*/
        mysql_query(&my_connection, "set names gbk");
        res = mysql_query(&my_connection, sql);
        if (res) {
            /*现在就代表执行失败了*/
            printf("Error: mysql_query !\n");
            /*不要忘了关闭连接*/
            mysql_close(&my_connection);
        }
        else 
        {
            /*现在就代表执行成功了*/
            /*mysql_affected_rows会返回执行sql后影响的行数*/
            printf("%lld 行受到影响!\n", mysql_affected_rows(&my_connection));
            // 把查询结果装入 res_ptr
            res_ptr = mysql_store_result(&my_connection);
            // 存在则输出
            if (res_ptr) 
            {
                // 获取行数,列数
                row = (int)mysql_num_rows(res_ptr);
                column = (int)mysql_num_fields(res_ptr);

                //打印字段
                field = mysql_fetch_fields(res_ptr);
                for (int i = 0; i < column; i++)
                {
                    printf("%s ", field->name);
                    field++;
                }
                printf("\n");

                // 执行输出结果,从第二行开始循环(第一行是字段名)
                for (int i = 1; i < row + 1; i++)
                {
                    // 一行数据
                    result_row = mysql_fetch_row(res_ptr);             
                    for (int j = 0; j < column; j++)
                    {
                        printf("%s ", result_row[j]);
                    }
                    printf("\n");
                }
            }
            /*不要忘了关闭连接*/
            mysql_close(&my_connection);
        }
    }
    else
    {
        printf("数据库连接失败!");
    }
}



int main()
{
    exeSql("insert into game_users values ('002','xiaowang',90);");

    exeSql("insert into game_users values ('001','小王',90);");

    exeSql("select * from game_users;");

	return 0;
} 

你可能感兴趣的:(MySQL学习篇,mysql,c语言,数据库)