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