使用C++编程语言保存数据库查询结果的方法

本文主要介绍使用 C++ 编程语言保存数据库查询结果的具体方法。

1 概述

本文使用 STL(Standard Template Library)的组合结构来保存数据库查询结果,STL 结构如下:

    // 定义存储sql结果的结构
    vector<map<string, string> > vecSqlResultMap;

即,使用 vector + map 的组合结构来保存数据库查询结果,假设现有数据库查询结果如下:

mysql> select * from roles_2;
+---------+------------+----------+
| role_id | occupation | camp     |
+---------+------------+----------+
|      12 | Mage       | alliance |
|      13 | Warlock    | Horde    |
+---------+------------+----------+
2 rows in set (0.01 sec)

mysql> 

那么 vector + map 的组合结构与上述查询结果的对应关系如下图:

从上图中的对应关系能够看出,通过 vector + map 结构可以保存数据库的查询结果。

2 示例代码

这里展示一段示例代码。

说明:正常情况下,需要真正去查询数据库、获取数据库查询结果,本文为了突出重点内容,示例代码中用到的数据库查询结果使用的就是前文图中的数据库结果,属于虚构出来的查询结果。

示例代码(sql_results_test1.cpp)的内容如下:

#include <iostream>
#include <map>
#include <vector>

using namespace std;

int main()
{
    // 定义存储sql结果的结构
    vector<map<string, string> > vecSqlResultMap;

    // 虚拟出一份sql查询结果
    // 列数
    int nColumeCount = 3;
    // 行数
    int nRowCount = 2;
    // 字段名
    string strField[3] = {"role_id", "occupation", "camp"};
    // 查询结果
    string strRowContent[2][3] = {{"12", "Mage", "alliance"}, {"13", "Warlock", "Horde"}};

    // 将sql查询结果保存起来
    // 查询结果共2行,所以外层循环2次
    for (int i = 0; i < 2; i++)
    {
        // 此map用于保存单行的数据
        map<string, string> mapRowValue;
        // 查询结果共3列,所以内存循环3次
        for (int j = 0; j < 3; j++)
        {
            mapRowValue.insert(pair<string, string>(strField[j], strRowContent[i][j]));
        }

        vecSqlResultMap.push_back(mapRowValue);
    }


    // 取出存储的sql查询结果
    cout << "first row, occupation is: " << vecSqlResultMap[0]["occupation"] << endl;
    cout << "second row, camp is: " << vecSqlResultMap[1]["camp"] << endl;

    return 0;
}


编译并执行上述代码,结果如下:

根据上述执行结果可知,通过使用 vector + map 组合结构(vector<map<string, string> > vecSqlResultMap;),成功地将数据库查询结果保存起来了,而后又通过该组合结构,输出了需要的结果内容。

这里再次强调一下,上述示例代码中的数据库查询结果(包括数据、行数、列数等)是虚拟出来的,真实场景下需要通过查询数据库获得的,一般数据库提供的接口,返回值肯定会有这些内容的。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liitdar

赠人玫瑰,手有余香,君与吾共勉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值