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;
};
典型的使用场景如下:
- 调用数据查询函数返回一个DataSet对象指针 DataSet *ds;
- 调用
ds->status()
判断函数调用是否成功,0表示成功,非0表示错误码,调用失败,结果集为空。 - 如果
ds->status()
返回成功,调用ds->is_end()
与ds->next()
遍历结果集取值。 - 调用
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();