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 ...
随机推荐
- 新零售SaaS架构:什么是订单履约系统?
什么是订单履约系统? 订单履约系统用来管理从接到销售订单,到把货品送到客户手中的整个业务过程.它是上游交易(如销售和客户下单环节)和下游仓储配送(如库存管理.物流)之间的桥梁,确保信息流的顺畅和操作的 ...
- 【Android 逆向】VM Kali 中 charles 抓android https 协议
1. 虚拟机调成桥接模式(不用选择 复制物理网络链接状态) 2. 虚拟机中 打开 Charles 4. 选择 Proxy ->SSL Proxying Settings 1. 选择SSL Pro ...
- 公司服务器建站笔记(三):腾讯云服务器CentOS8.2安装界面环境,使用vnc远程登陆并搭建轻量级Qt服务器
前言 有些小项目可能只有几个点,几十个点,几百个点,这个时候使用qt的tcp服务器或者mqtt或者websocket等相关服务就可以满足,腾讯云CentOs8.2服务器安装的是没有界面的版本,本篇 ...
- 项目实战:Qt+Arm+Fpga医疗肾镜(又名内窥镜)(实时影像、冻结、拍照、白平衡、九宫格、录像、背光调整、硬件光源调整、光源手动自动调整、物理按键)
若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111241205长期持续带来更多项目与技术分享, ...
- 前端保存JWT的使用方法
我们可以将JWT保存在cookie中,也可以保存在浏览器的本地存储里,我们保存在浏览器本地存储中 浏览器的本地存储提供了sessionStorage 和 localStorage 两种,从属于wind ...
- 【Azure Function】在Function执行中遇见Timeout错误
问题描述 在Function执行中遇见Timeout错误: Microsoft.Azure.WebJobs.Host.FunctionTimeoutException /Timeout value o ...
- C# 多线程(17):小总结
前言 本篇内容是小总结和过渡,看完这篇后,就要开始继续学习 C# 多线程中的知识点啦~. 前面,经过 16 篇的学习,我们学习了多线程.锁.线程池.任务.同步.异步等知识,还没有使用到 async.a ...
- 【代码更新】SPI时序——AD数模数转换
[代码更新]SPI时序--AD数模数转换 AD芯片手册:https://www.ti.com.cn/cn/lit/ds/symlink/ads8558.pdf?ts=1709473143911& ...
- Java 关于抽象类匿名子类
1 package com.bytezreo.abstractTest; 2 3 /** 4 * 5 * @Description Abstract 关键字使用 6 * @author Bytezer ...
- AtCoder Beginner Contest 338(A~E补题)
目录 A B C题 D题 E题 A 签到 #include <bits/stdc++.h> #define rep(i,a,b) for(int i = (a); i <= (b); ...