Linux C++ 连接 MySQL
2023-04-18 14:56:23 时间
安装MySQL
可以参考这篇文章《在Ubuntu上安装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
相关文章
- 心之所向:从DBA到开源创业者的转型之路 | 技术人访谈录
- 完爆GPT3、谷歌PaLM!检索增强模型Atlas刷新知识类小样本任务SOTA
- 基于对抗梯度的探索模型及其在点击预估中的应用
- 如何在GPU资源受限情况下微调超大模型
- 美团超1.5万台Kafka,抗下每秒数亿消息量的挑战
- 科学家提出液晶计算机新构想
- 十个开源工业检测数据集汇总
- 面向高性能计算场景的存储系统解决方案
- 自动驾驶“上云”已成大势,研发“入云”才是关键
- 微软支付1370万美元Bug赏金、研究员破解“星链”用户终端、Kali Linux 2022.3发布 | T资讯
- 黑龙江省政府与奇安信达成战略合作 奇安信黑龙江子公司正式揭牌
- Facebook聊天机器人自爆:我们公司出售用户数据,把FB账号删了,生活好多了
- Kafka在美团数据平台的实践
- 超越CLIP的多模态模型,只需不到1%的训练数据!南加大最新研究来了
- 中科院打脸谷歌:普通电脑追上量子优越性,几小时搞定原本要一万年的计算
- B站回应“核心用户都是Loser”、微博崩了、Meta 因过度收集用户数据被起诉 | T资讯
- 自动驾驶方向开源数据集资源汇总
- 别被隐私计算表象骗了
- DeepMind发现了几乎所有科学界已知的蛋白质的结构
- 提速1200倍!MIT开发新一代药物研发AI,吊打老模型