当前位置:Gxlcms > 数据库问题 > Linux 下C++ 操作 MySQL

Linux 下C++ 操作 MySQL

时间:2021-07-01 10:21:17 帮助过:21人阅读

/daniel/mysql [daniel@daniel2 mysql]$ ll total 8 drwxrwxr-x. 3 daniel daniel 4096 Dec 29 17:18 include drwxrwxr-x. 7 daniel daniel 4096 Dec 29 15:26 lib [daniel@daniel2 mysql]$

我在另一台机器上需要连接数据库,我不能将root 密码告诉别人,而是创建了一个数据库,再创建一个用户,这个用户在对应的数据库中有类似DBA 的权限,可以对所有变执行增删改查,同时可以创建表,修改表结构。

delimiter $$

CREATE DATABASE `CRM` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION=‘N‘ */$$

创建用户,赋权限

create user user1@% identified by 123456;

GRANT ALL ON CRM.* TO CRM@%;

创建表和存储过程。(为了简单我只给出表结构和存储过程在MySQL Workbench中的截图)

技术图片

技术图片

 

接下来我需要用到 MySQL提供的 API 函数进行操作了。

具体代码可以看这里 https://github.com/danielhu1983/Tools/tree/master/MySQLSample 下的代码

1. MySQL connection 类

调用  mysql_init 初始化connection

调用 mysql_real_connect 连接数据库

最后使用 mysql_close 关闭连接

2. MySQL DBHelper 类

提供Init 接口,调用 MySQL connection 的 init 方法,connect 方法

提供Exec 接口,调用 mysql_real_query 执行 SQL 命令

3. main 函数

调用MySQL DBHelper中的 init 函数和 exec 函数。

Makefile 中,

我需要再次单独指定需要查找头文件的路径。

MYSQL_ROOT = /daniel/mysql

HEADER_PATH=-I$(MYSQL_ROOT)/include

这只是编译用的,最终link 的时候还需要指定用到的 so 文件。这时候我从安装了 MySQL Server 的机器中执行如下命令,得到输出结果

[daniel@daniel ~]$ mysql_config --libs
-L/mysql/mysqlroot/lib -Wl,-R,/mysql/mysqlroot/lib -lmysqlclient -lpthread -lm -lrt -lssl -lcrypto -ldl
[daniel@daniel ~]$ 

上边红色高亮部分,在我没安装 MySQL 的机器上要改为对应的目录,比如我的 Makefile 文件中是这么写的

LIBS=-L$(MYSQL_ROOT)/lib -Wl,-R,$(MYSQL_ROOT)/lib -lmysqlclient -lpthread -lm -lrt -lssl -lcrypto -ldl

然后在机器中执行 make 命令,生成的可执行文件为 MySQL.1.0.0.1

在使用前,我需要在我的环境中配置好环境变量,打开 home 目录下的 .bash_profile 文件

export MYSQL_HOME=/daniel/mysql

export LD_LIBRARY_PATH=$MYSQL_HOME/lib:$LD_LIBRARY_PATH

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

这里我指定了LD_LIBRARY_PATH的路径,让程序可以从/daniel/mysql/lib 目录下找到MySQL 对应的lib库

代码中的SQL 我使用的是调用存储过程,所以最后结果可能是这样

[daniel@daniel2 MySQLSample]$ ./MySQL.1.0.0.1 
1 Daniel 
2 Daniel 

完成收工。

Linux 下C++ 操作 MySQL

标签:$path   col   --   pthread   执行   ica   ldl   init   ibm   

人气教程排行