Linux C++ 连接 MySQL
安装MySQL
连接
具体可以看官方的MySQL参考手册
示例代码
#include<iostream>
#include<mysql/mysql.h>
/*
mysql_init() 获取或初始化MYSQL结构
mysql_real_connect() 连接到MySQL服务器。
mysql_query() 执行指定为“以Null终结的字符串”的SQL查询。
mysql_use_result() 初始化逐行的结果集检索。
mysql_field_count() 返回上次执行语句的结果集的列数。
mysql_fetch_row() 从结果集中获取下一行
mysql_num_fields() 返回结果集中的字段数
*/
class MyDB
{
public:
MyDB();
~MyDB();
bool initDB(std::string host,std::string user,std::string pwd,std::string db_name);
bool exeSQL(std::string sql);
private:
MYSQL*connection;//连接mysql句柄指针
MYSQL_RES*result;//指向查询结果的指针
MYSQL_ROW row; //按行返回的查询信息
};
MyDB::MyDB()
{
connection = mysql_init(nullptr); //初始化数据库连接变量
if(connection == nullptr)
{
std::cout<<"mysql_init error!"<<std::endl;
exit(1);
}
}
MyDB::~MyDB()
{
if(connection != nullptr)
{
mysql_close(connection);
}
}
bool MyDB::initDB(std::string host,std::string user,std::string pwd,std::string db_name)
{
// 函数mysql_real_connect建立一个数据库连接
// 成功返回MYSQL*连接句柄,失败返回NULL
connection = mysql_real_connect(connection,host.c_str(),user.c_str(),pwd.c_str(),db_name.c_str(),0,nullptr,0);
if(connection == nullptr)
{
std::cout<<"mysql_real_connect error!"<<std::endl;
return false;
}
return true;
}
bool MyDB::exeSQL(std::string sql)
{
// mysql_query()执行成功返回0,失败返回非0值.
if(mysql_query(connection,sql.c_str()) != 0)
{
std::cout<<"mysql_query error!"<<std::endl;
return false;
}
else
{
result = mysql_store_result(connection); //获取结果集
// mysql_field_count()返回connection查询的列数
while ((row = mysql_fetch_row(result)) != nullptr)
{
// mysql_num_fields()返回结果集中的字段数
for(int j = 0;j < mysql_num_fields(result);++j)
{
std::cout<<row[j]<<" ";
}
std::cout<<std::endl;
}
// 释放结果集的内存
mysql_free_result(result);
}
return true;
}
int main()
{
MyDB db;
db.initDB("localhost","root","cmf.199991","customers");
db.exeSQL("select * from orders");
return 0;
}
编译命令
g++ main.cpp `mysql_config --cflags --libs` -o main
Linux C++ 连接 MySQL的更多相关文章
- Delphi能通过SSH登录Linux,连接MYSQL取数么?像Navicat一样
百度随时就能搜,你就懒得搜下.http://tieba.baidu.com/p/671327617 Ssh tunnel通常能实现3种功能1) 加密网络传输2) 绕过防火墙3) 让位于广域网的机器连接 ...
- linux远程连接mysql数据库
在linux系统中,远程连接mysql数据库时不仅需要开启ip访问,还需要将防火墙中添加相应规则 在wdlinux中的[安全管理]菜单下选择[防火墙[iptables]]选项,增加端口为3306的规则 ...
- linux C连接mysql
linux 环境下C语言连接数据库首先要配置环境 1,确定你的linux下安装mysql我们可以做个测试. 打开你的终端,在终端下输入:service mysqld status [root@bogo ...
- linux c++ 连接mysql 数据库
Mysql是数据库中的主流,因此我一直以为在Linux下配置会很很容易,结果Google了大半天,大部分网页只说了如何安装Mysql之类的废话,对如何使用C/C++连接Mysql却只字不提,或者提的方 ...
- linux ubuntu 连接mysql
linux ubuntu server sudo apt update -ysudo apt list --upgradable sudo apt upgrade -ysudo apt install ...
- Linux中连接mysql执行sql文件
数据量小的时候可以把sql语句内容粘贴执行,但是文件很大的时候,这样执行效率很慢很慢,需要使用source执行sql文件 1.客户端连接mysql数据库 [root@iZbp1bb2egi7w0uey ...
- 在 linux 中连接 mysql 数据库
命令格式 mysql -h主机地址 -u用户名 -p用户密码 登录本机 mysql mysql -u用户名 -p用户密码 实例 TD - X1数据库:/opt/lampp/bin/mysql -u r ...
- linux c++连接mysql编译问题
- tomcat通过socket连接MySQL,不再占用服务端口【linux】
MySQL连接方式的说明 http://icbm.iteye.com/blog/1840673 MySQL除了最常见的TCP连接方式外,还提供SOCKET(LINUX默认连接方式).PIPE和SHAR ...
- Linux 命令之 Navicat 连接 Linux 下的Mysql数据库
2016年12月7日18:44:06 -====------------------------ GRANT ALL PRIVILEGES ON *.* TO 'itoffice'@'%' IDEN ...
随机推荐
- html+css:小米顶部菜单+二级菜单
1.源码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- Unity学习笔记--数据持久化XML文件(1)
XML相关 Xml是可拓展标记语言,一种文件格式.我们使用xml来完成对数据持久化的存储.等待我们有一程序运行结束之后,将内存中的数据进行保存,(保存在硬盘/服务器)实现对数据的持久化存储. xml文 ...
- easyexcel: The maximum length of cell contents (text) is 32,767 characters
easyexcel The maximum length of cell contents (text) is 32,767 characters 使用easyexcel向excel中写内容出现了单元 ...
- Hi3516开发笔记(七):Hi3516虚拟机交叉开发环境搭建之交叉编译Qt
海思开发专栏 上一篇:<Hi3516开发笔记(六):通过HiTools使用USB/串口将uboot.kernel.rootfs和userdata按照分区表烧写镜像>下一篇:<Hi35 ...
- vi或vim中底行模式的查找并替换
# 格式 s/要查找的内容/替换为的内容/修饰符 # 说明 要查找的内容:可使用基本正则表达式模式 替换为的内容:不能使用模式,但可以使用\1,\2...等后向引用符号,还可以使用"& ...
- 【LeetCode二叉树#01】二叉树的遍历(递归/迭代)
二叉树递归遍历 写递归算法时候需要遵循的三个点: 确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函 ...
- JS笔记:方法两次调用,执行不同分支(公共变量,闭包,类三种方法实现)
好家伙, 当我们对一个方法进行两次调用,我们希望第一次执行A分支,第二次执行B分支,该怎么做? 这意味着在连续的两次调用中,方法的执行逻辑会交替执行不同的分支. 方法一:公共变量 let flag ...
- Emqx高可用架构
目录 优化前架构 主要问题 haproxy问题 优化后架构 优化功能点 emq版本升级 linux系统调优 haproxy调优 测试工具 依赖安装 配置erl环境变量 安装压测软件 测试指令与结果展示 ...
- 【Azure 存储服务】使用REST API操作Azure Storage Table,删除数据(Delete Entity)
问题描述 使用Azure Storage Table的REST API,实现根据过滤条件删除满足条件的数据,调用方法为 Delete Entity (Azure Storage) 问题实现 第一步: ...
- Java //遍历100以内的偶数,获取所有偶数的和,输出偶数的个数
1 //遍历100以内的偶数,获取所有偶数的和,输出偶数的个数 2 3 int i =1; 4 int sum = 0; 5 int count = 0; 6 for(i = 1;i<=100; ...