[C/C++] -- 访问Linux环境MySQL数据库

10 篇文章 0 订阅
2 篇文章 0 订阅

1.C++编程访问MySQL

查询MySQL是否安装成功

dpkg -l | grep libmysqlclient 
# 查看系统中是否安装了与 MySQL 客户端库相关的软件包。这个命令会列出所有包含 libmysqlclient 字样的软件包,以便确认是否已安装相关库。

ldconfig -p | grep mysqlclient 
# 查看系统中已经缓存的动态链接库信息,以确定是否已经有 mysqlclient 库被缓存。

CMakLists链接库文件

# 指定可执行文件链接时需要依赖的库文件
target_link_libraries(mysqlclient)

db.h

// 数据库操作类
class MySQL
{
public:
    // 初始化数据库连接
    MySQL();
    // 释放数据库连接资源
    // 这里用UserModel示例,通过UserModel如何对业务层封装底层数据库的操作。代码示例如下:
    ~MySQL();
    // 连接数据库
    bool connect();
    // 更新操作
    bool update(string sql);
    // 查询操作
    MYSQL_RES *query(string sql);
private:
    MYSQL *_conn;
};

db.cpp

// 数据库配置信息
static string server = "127.0.0.1";
static string user = "root";
static string password = "123";
static string dbname = "database";

// 初始化数据库连接
MySQL::MySQL()
{
    _conn = mysql_init(nullptr);
}
// 释放数据库连接资源
// 这里用UserModel示例,通过UserModel如何对业务层封装底层数据库的操作。代码示例如下:
MySQL::~MySQL()
{
    if (_conn != nullptr)
        mysql_close(_conn);
}
// 连接数据库
bool MySQL::connect()
{
    MYSQL *p = mysql_real_connect(_conn, server.c_str(), user.c_str(),
                                  password.c_str(), dbname.c_str(), 3306, nullptr, 0);
    if (p != nullptr)
    {
        // C和C++代码默认的编码字符是ASCII,如果不设置,从MySQL上拉下来的中文显示乱码
        mysql_query(_conn, "set names gbk");
    }
    return p;
}
// 更新操作
bool MySQL::update(string sql)
{
    if (mysql_query(_conn, sql.c_str()))
    {
        LOG_INFO << __FILE__ << ":" << __LINE__ << ":"
                 << sql << "更新失败!";
        return false;
    }
    return true;
}
// 查询操作
MYSQL_RES *MySQL::query(string sql)
{
    if (mysql_query(_conn, sql.c_str()))
    {
        LOG_INFO << __FILE__ << ":" << __LINE__ << ":"
                 << sql << "查询失败!";
        return nullptr;
    }
    return mysql_use_result(_conn);
}

2.创建数据库、表

CREATE DATABASE IF NOT EXISTS database;
USE database;

CREATE TABLE user (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  password VARCHAR(50) NOT NULL,
  state ENUM('online','offline') DEFAULT 'offline',
  PRIMARY KEY (id),
  UNIQUE KEY (name)
);

3.生成.sql脚本

mysqldump -u username -p --no-data database_name > schema.sql
  • username 是你的 MySQL 用户名
  • database_name 是你要导出结构的数据库名称
  • schema.sql 是输出的 SQL 脚本文件名

--no-data 参数用于指定只导出结构而不包括数据。如果需要同时导出数据,请去掉该参数。

4.执行.sql脚本

mysql -u username -p database_name < file.sql
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值