int CSQLMake::DoSqlFit(std::string &strSql, CParaSet &oInPara){ int iRet = 0; // 拆分sql std::vector<std::string> vctSql; SplitSql(strSql, vctSql); // 循环处理sql std::vector<std::string> vctSqlFit; std::vector<std::string>::iterator itr; for (itr=vctSql.begin(); itr!=vctSql.end(); itr++) { //std::cout << "=====>" << *itr << std::endl; MakeSqlFit(*itr, oInPara); //std::cout << "--------->" << *itr << std::endl; vctSqlFit.push_back(*itr); } // 合并sql MergeSql(strSql, vctSqlFit); // 最后处理一下排序字段 order by //需要排序,需要把原来的过滤条件给去掉。 std::string::size_type iOrderpos = strSql.find(" order "); if (std::string::npos == iOrderpos) { ;//没有order排序,直接过。 } else { strSql = strSql.substr(0,iOrderpos); } if ( oInPara["sort.strFild"].isNull() || oInPara["sort.iOrder"].isNull() ) { return iRet; } int iOrder = oInPara["sort.iOrder"].asInt(); std::string strSortField = oInPara["sort.strFild"].asString(); strSql = strSql + " order by " + strSortField; if (2 == iOrder) { strSql = strSql + " ASC"; } else { strSql = strSql + " DESC"; } return iRet;}
详细解决方案
将sql语句用paraset中的值给填充一上
热度:77 发布时间:2016-05-05 13:39:00.0
相关解决方案