MySQL 在C++中的使用方法
在本文中,我们将介绍如何在C++中使用MySQL。MySQL是一个开源的关系型数据库管理系统,具有快速、可信赖和灵活等优势,因此选择MySQL的人越来越多。
阅读更多:MySQL 教程
C++ MySQL API
在C++中,我们可以使用MySQL C++ APIs来操作MySQL数据库。这个API提供了大量的类和函数,可以方便的进行连接数据库、执行SQL语句、获取结果等操作。
连接数据库
连接MySQL数据库的方法如下:
mysqlpp::Connection conn(false); //创建连接对象
if (conn.connect(database, server, user, password)) //连接到数据库
{
//连接成功,进行操作
}
else
{
//连接失败,输出错误信息
std::cerr << conn.error() << std::endl;
}
其中,mysqlpp::Connection
是用来连接数据库的类,database
指定连接的数据库名,server
是MySQL服务器的地址,user
是用户名,password
是密码。
执行SQL语句
执行SQL语句的方法如下:
mysqlpp::Query query(conn.query(str));
if (mysqlpp::SimpleResult res = query.exec())
{
std::cout << "执行成功,共有" << res.rows() << "行受影响" << std::endl;
}
else
{
std::cerr << "执行失败:" << query.error() << std::endl;
}
其中,mysqlpp::Query
是用来执行SQL语句的类,str
是SQL语句字符串。如果执行成功,mysqlpp::SimpleResult
会返回受影响行数。
获取查询结果
获取查询结果的方法如下:
mysqlpp::StoreQueryResult res = query.store();
if (res)
{
std::cout << "查询成功,共有" << res.num_rows() << "行数据" << std::endl;
for (size_t i = 0; i < res.num_rows(); i++)
{
std::cout << res[i][0] << " " << res[i][1] << std::endl;
}
}
else
{
std::cerr << "查询失败:" << query.error() << std::endl;
}
其中,mysqlpp::StoreQueryResult
是用来存储查询结果的类,res.num_rows()
返回结果行数,res[i][0]
和res[i][1]
分别表示第i行的第1列和第2列数据。
示例代码
下面是使用MySQL C++ APIs连接MySQL数据库并执行SQL语句的示例代码:
#include <iostream>
#include <mysql++/mysql++.h>
int main()
{
const char* server = "127.0.0.1";
const char* user = "root";
const char* password = "password";
const char* database = "test";
mysqlpp::Connection conn(false);
if (conn.connect(database, server, user, password))
{
std::cout << "连接成功" << std::endl;
mysqlpp::Query query(conn.query("CREATE TABLE IF NOT EXISTS `test` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` CHAR(255) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8"));
if (mysqlpp::SimpleResult res = query.exec())
{
std::cout << "执行成功,共有" << res.rows() << "行受影响" << std::endl;
query.reset();
query << "INSERT INTO test (`name`) VALUES ('test')";
if (mysqlpp::SimpleResult res = query.exec())
{
std::cout << "执行成功,共有" << res.rows() << "行受影响" << std::endl;
query.reset();
query << "SELECT * FROM test";
mysqlpp::StoreQueryResult res = query.store();
if (res)
{
std::cout << "查询成功,共有" << res.num_rows() << "行数据" << std::endl;
for (size_t i = 0; i < res.num_rows(); i++)
{
std::cout << res[i][0] << " " << res[i][1] << std::endl;
}
}
else
{
std::cerr << "查询失败:" << query.error() << std::endl;
}
}
else
{
std::cerr << "执行失败:" << query.error() << std::endl;
}
}
else
{
std::cerr << "执行失败:" << query.error() << std::endl;
}
}
else
{
std::cerr << "连接失败:" << conn.error() << std::endl;
}
return 0;
}
运行结果如下:
连接成功
执行成功,共有1行受影响
执行成功,共有1行受影响
查询成功,共有1行数据
1 test
总结
本文介绍了如何在C++中使用MySQL数据库,并提供了连接数据库、执行SQL语句和获取查询结果的示例代码。使用MySQL C++ APIs可以方便的进行数据库操作,加快了开发效率。