#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();
}
#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();
}