MySQL 在C++中的使用方法

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可以方便的进行数据库操作,加快了开发效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程