Linux 下C++ 操作 MySQL

再插播一下C++对 MySQL的操作。

前边在 Red Hat 上安装了 MySQL 数据库,接下来我需要用C++ 在 Linux 上对 MySQL 读写操作。

我们先模拟一个相对真实的生产环境。

我有两台 Linux 机器,一台安装 MySQL 数据库,一台作为我的 Application 用的应用服务器。或者传统的,我的数据库服务器可能会用 HP 小型机,IBM AIX。整体结果如下图:

所以我准备了两台Linux VM, 其中一台是前边用到的安装 MySQL的 RedHat, 另外一台是新安装的 RH。

我需要在这台新的VM 中连接并操作MySQL数据库。首先需要保证我能够在这台机器上telnet MySQL的服务端口号。

因为我需要用到 MySQL 提供的lib 库,所以我将MySQL服务器中的头文件和lib库都拷贝过来。我放在这个目录中  /daniel/mysql

[[email protected] mysql]$ pwd
/daniel/mysql
[[email protected] 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
[[email protected] 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 的机器中执行如下命令,得到输出结果

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

上边红色高亮部分,在我没安装 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 我使用的是调用存储过程,所以最后结果可能是这样

[[email protected] MySQLSample]$ ./MySQL.1.0.0.1
1 Daniel
2 Daniel 

完成收工。

原文地址:https://www.cnblogs.com/danielhu/p/12125672.html

时间: 2024-08-29 22:24:31

Linux 下C++ 操作 MySQL的相关文章

Linux C语言操作MySQL

原文:Linux C语言操作MySQL 1.MySQL数据库简介 MySQL是一个开源码的小型关系数据库管理系统,体积小,速度快,总体成本低,开源.MySQL有以下特性: (1) 使用C和C++编写,并使用了多种编译器进行测试,保证源码的可移植性. (2) 支持多线程,利用CPU资源,支持多用户. (3) 可以处理拥有上千万条记录的大型数据库. (4)既可以作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为 一个库而嵌入到其他软件中去. 2. MySQL数据库的安装 安装MySQL数

(转载)Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记

Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记 Linux下配LMAP环境,花了我好几天的时间.之前没有配置过,网上的安装资料比较混乱,加上我用的版本问题,安装过程中出现了一些错误,经过好几次安装,翻了好多资料,最后找出问题的所在,才把环境搭建好,对于高手来说,这或许不算什么,但对于一个刚入门的新人,却是不一样了,这篇文章记录着我的一些笔记,希望对于那些刚刚入门的人们有所帮助,仅作为参考. 安装首先我们得获得MySQL,Apache,PHP,WordPress

Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数

文章转载:http://blog.snsgou.com/post-793.html 1.查看物理CPU的个数 [[email protected] ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l1 2.查看逻辑CPU的个数 [[email protected] ~]# cat /proc/cpuinfo |grep "processor"|wc -l4 3.查看CPU是几核(即,核心数) [[em

Linux下otl调用MySQL数据库

整体流程结构 otl用头文件otlv4.h来声明接口,具体实现在linux下是由unixODBC来实现:通过FreeTDS驱动最终调用MySQL的DBMS(个人观点) 要安装的软件及步骤 所以要安装的有unixODBC,FreeTDS 具体安装参考:http://wenku.baidu.com/view/89e9e711a2161479171128de.html(此文章里面的设置有问题,参考本文中的"关于odbcinst.ini和odbc.ini的说明一节") 关于odbcinst.i

Linux下通用二进制MySQL安装

(本文转载自 http://superve.leanote.com/post/Untitled-560d35b538f4117cf700031d) Linux下通用二进制MySQL安装 下载通用二进制包 > cd /usr/local/src > wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.44-linux2.6-i686.tar.gz 将源码解压至 /usr/local/ 目录下 > tar -zxvf mysql-5.

Windows 下Python操作MySQL

1.环境要求(Win7 X64): python 2.7, MySQL-python-1.2.3.win-amd64-py2.7 :http://www.codegood.com/download/11/  (有需要32位的在这个地方下载https://pypi.python.org/pypi/MySQL-python) 注意:请看清楚自己的电脑位数,如果64位的系统使用32位的安装包会报如下错误: ImportError: DLL load failed: %1 不是有效的 Win32 应用程

Linux下彻底卸载mysql详解

Linux下彻底卸载mysql详解 一.使用以下命令查看当前安装mysql情况,查找以前是否装有mysql 1 rpm -qa|grep -i mysql 可以看到如下图的所示: 显示之前安装了: MySQL-client-5.5.25a-1.rhel5 MySQL-server-5.5.25a-1.rhel5 2.停止mysql服务.删除之前安装的mysql 删除命令:rpm -e –nodeps 包名 1 2 rpm -ev MySQL-client-5.5.25a-1.rhel5  rpm

Linux下yum安装MySQL

写这篇文章的原因是:在刚开始使用Linux操作系统时想要搭建LAMP环境,于是开始在Google和百度上各种寻找资料,碰到了不是很多的问题后,我决定写这篇文章总结一下在Linux下yum安装MySQL数据库的过程,至于编译安装,我这里没法做过多的补充,因为我不想去妄言一个我还没有完全掌握的知识,各位见谅,以后搞明白了会补上的. 好了,我们直接进入正题: Linux 下 yum安装mysql 1. wget http://dev.mysql.com/get/mysql57-community-re

Linux下定时备份MySQL数据库的Shell脚本

Linux下定时备份MySQL数据库的Shell脚本 对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间和精力,还灰常不专业的说.于是,有了下面这段脚本的出现.参考了网上的很多教程,外加自己的测试,以下脚本经测试可用.#!/bin/bash#Shell Command For Backup MySQL Database Everyday Automatically By Crontab#Author :