梁越

c++连接mysql操作数据库

0 人看过

两种尝试,mysql connector/c++和mysql-devel

项目里面需要持久化一些数据,所以考虑把mysql用进来,我写的是c++端的,查阅了一些资料之后找到两个c++连接数据库的库,因为mysql connector/c++是官方网站提供下载的,所以我第一个选择了他,但是失败了,改用第二种方式。这里都记录下吧

connector/c++

如果你想在项目里用connector/c++,可以有三种方法

1. 下载编译好的tar.gz文件,然后解压使用里面的头文件和库文件

我是centos7,电脑64位,所以下载这个

然后解压tar -zvxf mysql-connector-c++-8.0.27-linux-glibc2.12-x86-64bit.tar.gz,然后里面的结构如下

include/jdbc是需要包括的文件夹路径,里面是需要的头文件;lib64里面是相关的库文件,动态库libmysqlcppconn.so,静态库jdbc是需要包括的文件夹路径,里面是需要的头文件;lib64里面是相关的库文件,动态库libmysqlcppconn-static.a

我是使用make编译的,然后参数这样写

-I 解压后的文件夹/include/jdbc

-L 解压后的文件夹/lib64

-lmysqlcppconn

我这里整个编译语句是这样的

gcc example.cpp -I mysql8.0.27/include/jdbc -L mysql8.0.27/lib64 -o example -lmysqlcppconn

不过这里编译一直会显示很多undefine的错误,不知道哪里的库没链接上,就算加上-lssl -lcrypto
这两个库也不能解决,后来我直接放弃了,但是网上很多人说没出过我这样的问题,你可以试试上面的编译语句

(这里我猜测如果我把他给的所有库文件给一一链接上应该就不会有问题,可是太多库了,懒得弄了)

2. 直接下载rpm文件进行安装

这里选择对应的下载

3.png

然后传到服务器上执行

yum localinstall mysql-connector-c++-8.0.27-1.el7.x86_64.rpm

但是很奇怪,我在/usr里找不到他安装的文件,很奇葩

3. 下载source文件自己编译

这一步我是没做了,你可以自己尝试,因为到这里我已经决定放弃使用connector/c++了,改用下面这个

mysql-devel

  1. 直接安装
yum install mysql-devel
  1. 等待安装完,我们看看安装路径
mysql_config --cflags --libs

显示的是编译需要的两个参数

-I/usr/include/mysql -m64
-L/usr/lib64/mysql -lmysqlclient -lpthread -ldl -lssl -lcrypto -lresolv -lm -lrt

那编译语句就简单了

gcc example.cpp -I/usr/include/mysql -m64  -L/usr/lib64/mysql -o example  -lmysqlclient -lpthread -ldl -lssl -lcrypto -lresolv -lm -lrt