在mysql官网 MysqlConnectorCpp 找到Connector/C++ 的下载页面,根据自己的操作系统及系统版本号筛选。我这里用的是Ubuntu Linux 20.04。
筛选出来发现下载列表有不少,我先下载了 libmysqlcppconn-dev_8.0.31-1ubuntu20.04_amd64.deb 这个文件,拷贝到linux系统目录,执行命令:
sudo dpkg -i libmysqlcppconn-dev_8.0.31-1ubuntu20.04_amd64.deb
结果报错:
[ams@ubuntu:~/Download]$ sudo dpkg -i libmysqlcppconn-dev_8.0.31-1ubuntu20.04_amd64.deb
正在选中未选择的软件包 libmysqlcppconn-dev:amd64。
(正在读取数据库 ... 系统当前共安装有 159483 个文件和目录。)
准备解压 libmysqlcppconn-dev_8.0.31-1ubuntu20.04_amd64.deb ...
正在解压 libmysqlcppconn-dev:amd64 (8.0.31-1ubuntu20.04) ...
dpkg: 依赖关系问题使得 libmysqlcppconn-dev:amd64 的配置工作不能继续:
libmysqlcppconn-dev:amd64 依赖于 libmysqlcppconn9 (= 8.0.31-1ubuntu20.04);然而:
未安装软件包 libmysqlcppconn9。
libmysqlcppconn-dev:amd64 依赖于 libmysqlcppconn8-2 (= 8.0.31-1ubuntu20.04);然而:
未安装软件包 libmysqlcppconn8-2。
dpkg: 处理软件包 libmysqlcppconn-dev:amd64 (--install)时出错:
依赖关系问题 - 仍未被配置
在处理时有错误发生:
libmysqlcppconn-dev:amd64
这个软件包依赖于 libmysqlcppconn9 与 libmysqlcppconn8-2,在刚才mysql的Ubuntu系统的下载页面能够找到这两个包,于是下载这两个包后,先安装这俩。
[ams@ubuntu:~/Download]$ sudo dpkg -i libmysqlcppconn8-2_8.0.31-1ubuntu20.04_amd64.deb
正在选中未选择的软件包 libmysqlcppconn8-2:amd64。
(正在读取数据库 ... 系统当前共安装有 159554 个文件和目录。)
准备解压 libmysqlcppconn8-2_8.0.31-1ubuntu20.04_amd64.deb ...
正在解压 libmysqlcppconn8-2:amd64 (8.0.31-1ubuntu20.04) ...
dpkg: 依赖关系问题使得 libmysqlcppconn8-2:amd64 的配置工作不能继续:
libmysqlcppconn8-2:amd64 依赖于 mysql-community-client-plugins;然而:
未安装软件包 mysql-community-client-plugins。
dpkg: 处理软件包 libmysqlcppconn8-2:amd64 (--install)时出错:
依赖关系问题 - 仍未被配置
正在处理用于 libc-bin (2.31-0ubuntu9.7) 的触发器 ...
在处理时有错误发生:
libmysqlcppconn8-2:amd64
[ams@ubuntu:~/Download]$ sudo dpkg -i libmysqlcppconn9_8.0.31-1ubuntu20.04_amd64.deb
正在选中未选择的软件包 libmysqlcppconn9:amd64。
(正在读取数据库 ... 系统当前共安装有 159564 个文件和目录。)
准备解压 libmysqlcppconn9_8.0.31-1ubuntu20.04_amd64.deb ...
正在解压 libmysqlcppconn9:amd64 (8.0.31-1ubuntu20.04) ...
正在设置 libmysqlcppconn9:amd64 (8.0.31-1ubuntu20.04) ...
正在处理用于 libc-bin (2.31-0ubuntu9.7) 的触发器 ...
一个成功了,一个失败。看到错误信息是 libmysqlcppconn8-2:amd64 依赖于 mysql-community-client-plugins
然而在刚才的下载页面没有找到 mysql-community-client-plugins 的相关下载。
回到下载首页,能看到跟community相关的有一个 Mysql Community Server,点进去后选好操作系统与版本号,搜了一下,找到了 mysql-community-client-plugins 的下载包:mysql-community-client-plugins_8.0.31-1ubuntu20.04_amd64.deb。
下载后依次安装:
[ams@ubuntu:~/Download]$ sudo dpkg -i mysql-community-client-plugins_8.0.31-1ubuntu20.04_amd64.deb
正在选中未选择的软件包 mysql-community-client-plugins。
(正在读取数据库 ... 系统当前共安装有 159574 个文件和目录。)
准备解压 mysql-community-client-plugins_8.0.31-1ubuntu20.04_amd64.deb ...
正在解压 mysql-community-client-plugins (8.0.31-1ubuntu20.04) ...
正在设置 mysql-community-client-plugins (8.0.31-1ubuntu20.04) ...
正在处理用于 libc-bin (2.31-0ubuntu9.7) 的触发器 ...
[ams@ubuntu:~/Download]$ sudo dpkg -i libmysqlcppconn8-2_8.0.31-1ubuntu20.04_amd64.deb
(正在读取数据库 ... 系统当前共安装有 159585 个文件和目录。)
准备解压 libmysqlcppconn8-2_8.0.31-1ubuntu20.04_amd64.deb ...
正在解压 libmysqlcppconn8-2:amd64 (8.0.31-1ubuntu20.04) 并覆盖 (8.0.31-1ubuntu20.04) ...
正在设置 libmysqlcppconn8-2:amd64 (8.0.31-1ubuntu20.04) ...
正在处理用于 libc-bin (2.31-0ubuntu9.7) 的触发器 ...
[ams@ubuntu:~/Download]$ sudo dpkg -i libmysqlcppconn-dev_8.0.31-1ubuntu20.04_amd64.deb
(正在读取数据库 ... 系统当前共安装有 159585 个文件和目录。)
准备解压 libmysqlcppconn-dev_8.0.31-1ubuntu20.04_amd64.deb ...
正在解压 libmysqlcppconn-dev:amd64 (8.0.31-1ubuntu20.04) 并覆盖 (8.0.31-1ubuntu20.04) ...
正在设置 libmysqlcppconn-dev:amd64 (8.0.31-1ubuntu20.04) ...
都安装成功。
使用C++代码测试:
编译、链接、运行结果都正确。
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace sql;
using namespace sql::mysql;
int main()
{
Driver* driver = sql::mysql::get_driver_instance();
string host = "tcp://192.168.2.238:3306/Test";
string user = "test";
string passwd = "test";
Connection* conn = driver->connect(host, user, passwd);
PreparedStatement* state = conn->prepareStatement("insert into t_AuthorizedSoftware Values(?, ?, ?);");
PreparedStatement* state2 = conn->prepareStatement("replace into t_AuthorizedSoftware Values(?, ?, ?);");
PreparedStatement* state3 = conn->prepareStatement("delete from t_AuthorizedSoftware where Account = ? and Software = ?;");
//state: insert into
state->setString(1, "100");
state->setString(2, "100");
state->setInt(3, 100);
state->execute();
state->setString(1, "101");
state->setString(2, "101");
state->setInt(3, 101);
state->execute();
state->setString(1, "102");
state->setString(2, "102");
state->setInt(3, 102);
state->execute();
//state2:replace into
state2->setString(1, "102");
state2->setString(2, "103");
state2->setInt(3, 102);
state2->execute();
conn->commit();
//state3:delete
state3->setInt(1, 100);
state3->setString(2, "100");
state3->execute();
state3->setInt(1, 101);
state3->setString(2, "101");
state3->execute();
state3->setInt(1, 102);
state3->setString(2, "102");
state3->execute();
return 0;
}