C++连接MySQL数据库的两种常用方法对比
·
在C++项目中操作MySQL数据库时,我们通常会选择MySQL++或MySQL Connector/C++两种库。下面我将分享这两种方式的具体使用方法和常见问题解决方案。
一、使用MySQL++库
MySQL++是对MySQL C API的C++封装,提供了更符合C++习惯的编程接口。
1. 环境配置
Linux系统安装步骤:
-
安装MySQL开发库
sudo yum install mysql-devel -
下载并编译MySQL++源码
wget http://www.tangentsoft.net/mysql++/releases/mysql++-3.2.2.tar.gz tar -zxvf mysql++-3.2.2.tar.gz cd mysql++-3.2.2 ./configure --enable-thread-check --enable-disasm LDFLAGS='-pthread' make sudo make install -
配置动态库路径
echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig
2. 基础使用示例
#include <mysql++.h>
#include <iostream>
int main() {
mysqlpp::Connection conn(false);
if (conn.connect("test", "localhost", "root", "123456")) {
mysqlpp::Query query = conn.query("SELECT * FROM student");
if (auto res = query.store()) {
for (auto it = res.begin(); it != res.end(); ++it) {
mysqlpp::Row row = *it;
std::cout << row[0] << " " << row[1] << std::endl;
}
}
}
return 0;
}
编译时需要链接相关库:
g++ -o demo demo.cpp -lmysqlpp -I/usr/include/mysql
二、使用MySQL Connector/C++
这是MySQL官方提供的C++连接器,遵循JDBC规范。
1. 环境准备
需要先安装Boost库,然后配置VS项目:
- 添加头文件包含路径
- 设置库文件目录
- 添加mysqlcppconn.lib到依赖项
- 复制mysqlcppconn.dll到项目目录
2. 基本操作示例
#include <mysql_driver.h>
#include <mysql_connection.h>
int main() {
sql::mysql::MySQL_Driver *driver;
sql::Connection *con;
driver = sql::mysql::get_mysql_driver_instance();
con = driver->connect("tcp://localhost:3306/test", "root", "123456");
sql::Statement *stmt = con->createStatement();
sql::ResultSet *res = stmt->executeQuery("SELECT * FROM student");
while (res->next()) {
std::cout << res->getString("name") << std::endl;
}
delete res;
delete stmt;
delete con;
return 0;
}
三、常见问题解决
-
中文乱码问题
stmt->execute("set names 'gbk'"); -
DateTime类型处理
// 插入当前时间 CTime now = CTime::GetCurrentTime(); CString strTime = now.Format("%Y-%m-%d %H:%M:%S"); prep_stmt->setString(1, strTime.GetString()); -
连接失败检查
- 确认MySQL服务运行中
- 检查用户名密码
- 验证网络连接
四、两种方式对比
| 特性 | MySQL++ | Connector/C++ | |------|---------|---------------| | 封装方式 | 封装C API | 遵循JDBC规范 | | 跨平台 | 支持 | 支持 | | 依赖项 | 较少 | 需要Boost | | 易用性 | 较简单 | 类似JDBC |
根据项目需求选择合适的库,小型项目推荐MySQL++,需要与Java代码保持一致的推荐Connector/C++。
更多推荐


所有评论(0)