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