MySQL连接VS2019与bug调试

一、连接属性环境

1. 修改项目属性的包含目录与库目录,其分别包含为MySQL安装目录中的clude与lib

 2. 添加依赖项libmysql.lib,同时将libmysql.dll文件复制在c:\windows\system32文件下

 3. 环境安置

把环境设置为数据库的bin文件夹即可,注意末尾分号要用半角的

测试代码:

#include <stdio.h> 
#include <mysql.h> // mysql 文
int main(void)
{
    MYSQL mysql;//数据库句柄
    MYSQL_RES* res; //查询结果集
    MYSQL_ROW row; //记录结构体

    //初始化数据库
    mysql_init(&mysql);

    //设置字符编码
    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");

    //连接数据库
    /* mysql_real_connect(
    *   &mysql,                 调用mysql_init()初始化MYSQL结构
        const char host,        值可以是一个主机名或一个IP地址
        const char user,        参数包含用户的MySQL登录ID
        const char passwd,      加密口令,访问密码
        const char db,          数据库名
        unsigned int port,      值对应TCP/IP连接将用作端口
        const char unixsocket,  一般为NULL
        unsigned intclientflag  一般为0
        )*/
    if (mysql_real_connect(&mysql, "x.x.x.x", "root", "password", "数据库名", 3306, NULL, 0) == NULL)
    {
        printf("错误原因:%s\n", mysql_error(&mysql));
        printf("连接失败!\n");
        exit(-1);
    }


    //查询数据
    int	ret = mysql_query(&mysql, "select * from 表名;"); 
    printf(" ret: %d\n", ret);

    //获取结果集
    res = mysql_store_result(&mysql);

    //给 ROW 赋值, 判断 ROW 是否为空, 不为空就打印数据。     
    while (row = mysql_fetch_row(res))
    {
        printf("%s	", row[0]);   //字段1
        printf("%s	", row[1]);   //字段2
        printf("%s	", row[2]);	  //字段3
        printf("%s	\n", row[3]); //字段4
    }

    //释放结果集
    mysql_free_result(res);

    //关闭数据库
    mysql_close(&mysql);
            
    system("pause");
    return 0;
}

二 、 bug调试

1. 若出现由于找不到libmysql.dll / 由于找不到libssl-1_1-x64.dll,无法继续执行代码

解决方法:在项目属性页的“配置属性”-“调试”-“环境” 中编辑,把环境设置为数据库的bin文件夹即可,注意末尾分号要用半角的

例:此处配置MySQL连接的环境

PATH=C:\Program Files\MySQL\MySQL Server 8.0\bin

2. VS19运行程序,出现“由于找不到VCRUNTIME140D.dll,无法继续执行代码。重新安装程序可能会解决此问题

经查询,在系统文件中已有VCRUNTIME140D.dll。

解决方法:修改代码生成的运行库即可。

 3. 若出现Host is not allowed to connect to this MySQL server解决方法

错误原因:MySQL不允许远程登陆

解决方法:若是防火墙没有限制3306端口,修改MySQL的访问权限

mysql -u root -p  #登录mysql
use mysql  #选择数据库
update user set host = '%' where user = 'root'; #修改为授权所有
flush privilegs #刷新权限

4. 数据库无法连接的情况

诸如SQLyog错误代码0258的情况,即密码的方式发生了改变

解决方案:以管理员运行MySQL 8.0 Command Line Client - Unicode,输入密码,登录MySQL;

按照以下格式输入命令,其中password指密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

若发生错误,即查询其root的权限是什么,即

use mysql  # 选择数据库
select user,host from user; #查看数据表内的内容

若是root后的权限发生改变,即若为 %,即改为

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值