结果集合类

类定义

DataSet 结果集

DataSet类是基本面数据查询结果的标准返回, 表示一个二维表数据存储。类声明如下:

class DataSet
{
public:
    //获取api调用结果, 0: 成功, 非0: 错误码
    virtual int status() = 0;

    //判断是否已经是到达结果集末尾
    virtual bool is_end() = 0;

    //移到下一条记录
    virtual void next() = 0;

    //获取整型值
    virtual int get_integer(const char *key) = 0;

    //获取长整型值
    virtual long long get_long_integer(const char *key) = 0;

    //获取浮点型值
    virtual double get_real(const char *key) = 0;

    //获取字符串型值
    virtual const char* get_string(const char *key) = 0;

    //释放数据集合
    virtual void release() = 0;

    //打印数据
    virtual const char* debug_string() = 0;
};

典型的使用场景如下:

  1. 调用数据查询函数返回一个DataSet对象指针 DataSet *ds;
  2. 调用ds->status() 判断函数调用是否成功,0表示成功,非0表示错误码,调用失败,结果集为空。
  3. 如果ds->status()返回成功,调用ds->is_end()ds->next() 遍历结果集取值。
  4. 调用ds->release() 释放结果集。

debug_string 用于返回整个结果集内容, 包含字段和值, 一般用于开发调试, 快速知晓结果集的表结构。

使用举例

//获取深交所最新的代码信息
DataSet* jy = get_instruments("SZSE");

if (jy->status() == 0) 
{
    //调用get_instruments成功, 以下遍历结果集

    while (!jy->is_end())  //先要判断是否已经到达结果集末尾
    {

        cout << jy->get_string("symbol") << endl;       //取字符串值
        cout << jy->get_integer("sec_level") << endl;   //取整型值
        cout << jy->get_real("pre_close") << endl;      //取浮点值

        jy->next(); //移动到下一条记录
    }
}
else
{
    // 调用get_instruments 失败,  jy->status() 为错误码
    cout << "get_instruments error: " << jy->status() << endl;
}

// 使用完结果集要释放
jy->release();