huidong

首页 | 会员登录 | 关于争取 2022 寒假做出汇东网 Ver3.0.0 !
搜索文章


本文记录了如何使用mysql for c库连接本地/网络上的mysql数据库

在阅读本文之前需要确认你有Mysql本地环境或者网络mysql数据库。


正文


首先,我的环境:


VS 2019

win 7


第二步,下载MySQL库 for C

到这里下载:

https://downloads.mysql.com/archives/c-c/

其实你到网上搜mysql for c也可以搜到,打开之后看起来是这样:

图片.png


我下载的是红线框起来的这个版本,,这个版本是windows系统使用的32位库,你也可以下载64位的。


这里保险起见,预留一个备用下载地址,百度网盘的:

链接: https://pan.baidu.com/s/17LaQspQNA9b_cg9PAZWGvw  提取码: i7je


解压并打开下载好的压缩包,看起来是这样的:

图片.png


然后再新打开一个文件资源管理器,转到VS的安装目录:

图片.png


不同的人的安装目录不一样。

然后进入到它的include和lib的存放的文件夹,不同的VS版本不太一样,不过找一找也就找得到了,VS2019是这样的:

图片.png


我们分别打开VS的include文件夹和lib文件夹,然后将下载下来的mysql的压缩包中的include文件夹也打开:


图片.png


将其中的所有文件复制到VS的include文件夹内:


图片.png


然后是lib文件夹,MySQL文件夹内的lib文件夹中:

图片.png图片.png

vs12和vs14两个文件夹里的lib应该分别是vs120和vs140两个版本的lib,根据你的版本选择其中一个lib并复制到VS的lib文件夹里,就不放图了。


总结:


将MySql的所有include文件复制到VS的include文件夹里

将MySQL的vs12或vs14里的lib复制到VS的lib文件夹里


然后创建一个MySQL测试项目,将MySQL的文件夹里的lib文件夹里的libmysql.dll和libmysql.lib复制到项目目录下

图片.png


注意,每个使用Mysql库的项目下都要放这两个文件才行,当要发布release时,需要在程序目录下带上libmysql.dll。


最后在项目代码中输入代码进行测试:


#include <iostream>
#include <string>
#include <mysql.h>
#include<iomanip>

using namespace std;

void sqlselect(MYSQL*, const char*);     //测试查询数据 

MYSQL* mysql = NULL;

int main()
{
    //初始化MySQL连接句柄
    mysql = mysql_init((MYSQL*)0);

    mysql_real_connect
    (
        mysql,
        "10.255.60.194", //主机ip地址
        "root", //数据库用户名
        "这里输入你的root用户的密码", //数据库密码
        "要连接的库名", //数据库名称
        3306, //数据库端口,0表示默认端口(即3306)
        NULL, //如果unix_socket不是NULL,字符串指定套接字或应该被使用的命名管道。注意host参数决定连接的类型
        0 //通常是0
    );

    if (!mysql) //连接失败
    {
        cout << "Connection error: " << mysql_errno(mysql) 
             << ", " << mysql_error(mysql) << endl;
    }

    const char* command = "select * from 表名"; //查询指令

    // 改变编码格式
    mysql_set_character_set(mysql, "GB2312");

    sqlselect(mysql, command); //查询数据  

    mysql_close(mysql); //关闭连接  

    return 0;
}

void sqlselect(MYSQL* mysql, const char* command)
{

    int flag = mysql_real_query(mysql, command, strlen(command));

    if (flag)
    {
        cout << "Select error: " << mysql_errno(mysql) << ", " << mysql_error(mysql) << endl;
        return;
    }

    MYSQL_RES* res = mysql_store_result(mysql); //读取将查询结果   
    MYSQL_FIELD* field = mysql_fetch_fields(res); //获取所有列名
    int field_count = mysql_field_count(mysql); //获取列数

                                                //输出所有列名
    for (int i = 0; i < field_count; i++)
        cout << setw(15) << field[i].name;

    cout << endl;

    //遍历输出每一行数据  
    MYSQL_ROW row;
    while (row = mysql_fetch_row(res))
    {
        for (int i = 0; i < field_count; i++)
            cout << setw(15) << row[i];
        cout << endl;
    }
}

这段代码来自https://blog.csdn.net/dubulingbo/article/details/103208059 


这段代码中的MYSQL数据库连接信息需要自己修改,SQL语句也要自己修改。


有人可能不知道自己的主机ip之类的信息,

如果是本地主机,那么ip填localhost

如果是服务器的,那么到你买数据库的网站上查,我的是这样:

图片.png

蓝框内的是ip,复制下来,还有数据库帐号密码之类的信息也在这。


然后编译。


如果编译出错,请检查:

1-有没有在cpp中写#pragma comment(lib,"libmysql.lib")

2-下载的mysql库位数和编译的程序的位数是否一致,比如是32位的库,那编译程序时也要编译32位程序


如果编译过关,那么运行程序,如果出现提示

MySQL server has gone away

那么检查数据库信息是否填写正确,一定要仔细看帐号密码是否正确。


如果还是不行,那我也没办法。


如果没有提示这个,那么如果你的代码中的SQL语句没毛病,那么程序会显示出查询结果:

图片.png

(我的直接查了我的数据库,有点乱。)


当你看到cmd输出成功了查询结果时,恭喜你使用MySQL库成功了。


推荐使用我做的mysql_tools来操作mysql数据库,更方便:http://huidong.xyz/index.php?mode=2&id=188 




返回首页


Copyright (C) 2018-2024 huidong