int DbHelper::GetSqlTempTable(const DeviceCfg &devcfg,const string& sql,map<TString,vector<TString>>& outmap,vector<TString>& mapheader ,string& err ,TString DbDirFile)
if(dbCon.Open(err)){
try{
int rowIndex =0;
_RecordsetPtr pRecordset = dbCon.ExecSql(sql);
//获取列名
if(pRecordset)
{
int count =pRecordset->Fields->GetCount();
for(int i = 0; i <count ; i++)
{
BSTR bstrColName;
FieldPtr fieldPtr= pRecordset->Fields->GetItem(_variant_t((long)i));
if(fieldPtr){
fieldPtr->get_Name(&bstrColName);
string colName =_com_util::ConvertBSTRToString(bstrColName);
//colName.append((LPCSTR)bstrColName,strlen((LPCSTR)bstrColName));
TString tscolName =utils::ASCIIToUNICODE(colName);
if(outmap.find(tscolName) == outmap.end()){
vector<TString> tempvec;
outmap[tscolName] =tempvec;
mapheader.push_back(tscolName);
}
}
fieldPtr->Release();
}
}else{
err="sql 执行为空";
return -1;
}
while (pRecordset &&!pRecordset->adoEOF){
for(int i = 0; i < pRecordset->Fields->GetCount(); i++)
{
TString tscolName ;
string result;
BSTR bstrColName;
FieldPtr fieldPtr= pRecordset->Fields->GetItem(_variant_t((long)i));
if(fieldPtr){
fieldPtr->get_Name(&bstrColName);
string colName =_com_util::ConvertBSTRToString(bstrColName);
tscolName =utils::ASCIIToUNICODE(colName);
if(outmap.find(tscolName) == outmap.end()){
vector<TString> tempvec;
outmap[tscolName] =tempvec;
}
}
fieldPtr->Release();
if(pRecordset->GetCollect(_variant_t((long)i)).vt != VT_NULL)
{
_bstr_t value = (_bstr_t)pRecordset->GetCollect(_variant_t((long)i));
if(strlen((LPCSTR)value) > 0){
result= value;
}
}
outmap[tscolName].push_back(utils::ASCIIToUNICODE(result));
}
rowIndex++;
pRecordset->MoveNext();
if(count++ >1000)
break;
}
dbCon.CloseDataSet(pRecordset!=NULL);
}
catch(_com_error& e)
{
LOG_ERR(_T("com_err %s"),(TCHAR*)e.Description());
err = utils::SZFormat("com_err %s",e.Description());
return -2;
}
catch(...){
err = "未知错误";
}
}else{
return -2;
}