前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux C++ 连接 MySQL

Linux C++ 连接 MySQL

作者头像
玖柒的小窝
修改2021-12-24 11:39:58
9.5K0
修改2021-12-24 11:39:58
举报
文章被收录于专栏:各类技术文章~各类技术文章~

安装MySQL

可以参考这篇文章《在Ubuntu上安装MySQL》

连接

具体可以看官方的MySQL参考手册

示例代码

代码语言:javascript
复制
#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;
}

编译命令

代码语言:javascript
复制
g++ main.cpp `mysql_config --cflags --libs` -o main

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装MySQL
  • 连接
  • 示例代码
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档