connector/c++ 远程连接mysql数据库

本文详细介绍了在VS2022环境下,如何配置connector/c++8.0.32库以连接远程Linux上的mysql5.7.41数据库。关键步骤包括选择正确的库版本,配置附加包含目录、附加库目录和附加依赖项,以及设置环境变量。此外,还强调了在处理中文字符串时可能出现的编码问题,需通过setNames设置GBK编码以避免乱码。
摘要由CSDN通过智能技术生成

connector/c++ 远程连接mysql 数据库

官方参考文档mysql:https://dev.mysql.com/doc/connector-cpp/8.0/en/connector-cpp-apps-windows-notes.html

connector/c++ 分为release版本和debug版本,如果使用debug模式,而下载的是release模式库文件,那么编译就会出现内存不够的问题。请选择正确的驱动包;

运行环境:vs2022,mysql5.7.41 ,connector/c++ 8.0.32(mysql安装在linux虚拟机中);

1、下载选择对应版本
在这里插入图片描述

下载完成后的目录结构:

在这里插入图片描述

2、配置属性
项目名称右击选择属性:
配置属性 -> C/C++ -> 常规 -> 附加包含目录 -> include文件夹

配置属性 -> 连接器 -> 常规 -> 附加库目录 ->
debug模式: LIB/vs14/debug,如果是x64的话,目录结构是 lib64/vs14/debug
release模式: LIB/vs14

配置属性 -> 连接器 -> 输入 -> 附加依赖项 ->
传统jdbc链接:添加mysqlcppconn.lib;
X DevAPI链接:添加mysqlcppconn8.lib;

配置属性->调试->环境->PATH=C:\mysql\mysql-connector-c+±8.0.32-winx64-debug\lib64;

PATH=和末尾的分号不能缺少,这个目录是 libssl-1_1-x64.dll 和libcrypto-1_1-x64.dll文件存在的目录

3、连接数据库
参照mysql官方文档

	sql::mysql::MySQL_Driver* driver;//载入驱动
	sql::Connection* con;//链接数据库
	sql::Statement* stmt;//数据库语句
	sql::ResultSet* res;//查询结果

	driver = sql::mysql::get_mysql_driver_instance();
	con = driver->connect("mysql主机ip:3306", "用户名", "密码");//例如connect("192.168.12.1:3306", "root", "root")
	stmt = con->createStatement();
	stmt->execute("use 数据库名");
	res = stmt->executeQuery("select * from student");

4、读取和写入中文字符串出现乱码
原因是控制台默认使用操作系统的编码gbk、与mysql中存储的数据编码不一致;
查看mysql编码:

use 数据库名;
show create table 表名;

在这里插入图片描述
默认建表时是UTF8编码;

stmt->execute("set names gbk");
/**相当于执行了下面三条命令语句:
mysql> SET character_set_client = gbk; 标记客户端传输来的数据为gbk编码
mysql> SET character_set_results = gbk; 标记返回客户端的数据为gbk
mysql> SET character_set_connection = gbk; 数据库收到客户端的语句后,要转换到gbk
**/

注意:在执行完这条命令后在当前连接内有效,重新连接后需要再次设置,每个连接的编码是相互独立的,所以此时在mysql的控制台查询依然是utf8编码,只有在vs的控制台打印才是gbk编码,不要误认为没有设置成功;

	stmt->execute("set names gbk");
	res = stmt->executeQuery("Show variables like 'character%'");
	while (res->next())
	{
		cout  << res->getString("Variable_name")<<"=" << res->getString("Value") << endl;
	}

结果如下图:
在这里插入图片描述

此时的mysql控制台结果如下:
在这里插入图片描述
不同mysql链接之间互相独立

参照自己程序中使用的编码格式,设置正确后不会再乱码!

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值