您的位置:首页 > 运维架构

从历史库中读取数据

2015-09-01 10:53 477 查看
#include <QCoreApplication>

#include <QTextCodec>

#include <QMapIterator>

#include <QDebug>

#include <cmath>

#include <QVector>

#include "math.h"

#include "DBAccess.h"

#include "CSqlResultAlign.h"

bool getValueFromHisDB(float **pResult, QString sql_str, int &dataNum)

{

    qDebug() << "sql is ->"<<sql_str;

    CDbAccess g_db_access;

    vector<TErrorMsg> g_err_vec;

    CSqlResultAlign g_sqlresult;

    char username[32] = "SYSDBA";

    char passwd[32] = "SYSDBA";

    char dbname[32] = "mdb";

    int ret_code =g_db_access.Login(username,passwd,dbname,LOGIN_DEFAULT_MODE,g_err_vec);

    if(ret_code == DB_FAIL)

    {

        qDebug()<<"***************** Login fail*******************";

        return false;

    }

    qDebug() << "******** Login SUCCESS ************";

    char sql_str_c[1024]={0};

    strcpy(sql_str_c,sql_str.toLocal8Bit());

    UserSpecTypeMap user_type_map;

    char *result_link = new char;

    char *data_link = new char;

    signed short *result_indicator = new signed short;

    TResultHead *result_head_ptr = new TResultHead;

    TFieldInfo *field_info_ptr = new TFieldInfo;

    ret_code =g_db_access.GetQueryResult(sql_str_c,GET_ALL_RESULT,user_type_map,result_link,result_indicator,g_err_vec);

    if(ret_code == DB_FAIL)

    {

        delete result_link;

        result_link =NULL;

        qDebug()<<"GetQueryResult error";

        return false;

    }

    ret_code =g_db_access.GetQueryHead(result_link,result_head_ptr,field_info_ptr,data_link,g_err_vec);

    if(ret_code ==DB_FAIL)

    {

        delete result_link;

        result_link =NULL;

        qDebug()<<"GetQueryHead errors";

        return false;

    }

    int record_num = result_head_ptr->data_num;

    if (record_num != 0)

    {

        dataNum =record_num;

        *pResult = (float*)malloc(sizeof(float)*dataNum);

        ret_code = g_sqlresult.GetAlignResult(data_link, result_head_ptr, field_info_ptr, *pResult, sizeof(float));

        if (ret_code != DB_FAIL)

        {

            return false;

        }

    }

    return true;

}

int main(int argc, char *argv[])

{

    QString sql_str;

    sql_str ="select top 1000 CUR_002 from hisdb.hisdb.yc_rs_1441";

        float *a1 =NULL;

        int dataNum =0;

        getValueFromHisDB(&a1,sql_str,dataNum);

        if(dataNum >0)

        {

            for(int i =0; i<dataNum; i++)

            {

                printf("%f\n",a1[i]);

            }

            free(a1);

        }

    return a.exec();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  运维管理系统