从历史库中读取数据

#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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值