From 268ff39fff8dce9716f2026ac0f0d01a805e8fb3 Mon Sep 17 00:00:00 2001 From: Riccardo Maria Bianchi <riccardo.maria.bianchi@cern.ch> Date: Wed, 3 Jun 2020 19:34:19 +0200 Subject: [PATCH] working point before droppint QSql in favor of sqlite3 library --- GeoModelDBManager/src/GMDBManager.cpp | 28 ++++++++++++++++++--------- GeoModelWrite/src/WriteGeoModel.cpp | 11 ++++++++++- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/GeoModelDBManager/src/GMDBManager.cpp b/GeoModelDBManager/src/GMDBManager.cpp index dc1ecc1..97ce30c 100644 --- a/GeoModelDBManager/src/GMDBManager.cpp +++ b/GeoModelDBManager/src/GMDBManager.cpp @@ -30,7 +30,15 @@ std::vector<std::string> toStdVectorStrings(QStringList qlist) // FIXME: should go to an utility class std::string joinVectorStrings(std::vector<std::string> vec, std::string sep="") { std::string s; - for (const auto &piece : vec) s += (piece + sep); + unsigned int ii = 0; + for (const auto &piece : vec) { + ++ii; + if (ii == vec.size()) { + s += (piece); + } else { + s += (piece + sep); + } + } return s; } @@ -506,13 +514,15 @@ bool GMDBManager::addListOfRecordsToTable(const std::string tableName, const std //qDebug() << "rec:" << rec; ++id; - QStringList items; +// QStringList items; + std::vector<std::string> items; for ( const std::string& item : rec) { - items << '"' + QString::fromStdString(item) + '"'; + items.push_back('"' + item + '"'); } - QString values = items.join(","); - queryStr += " (" + QString::number(id) + "," + values + ")"; +// QString values = items.join(","); + std::string values = joinVectorStrings(items, ","); + queryStr += " (" + QString::number(id) + "," + QString::fromStdString(values) + ")"; if (id != nMat) queryStr += ","; else @@ -538,17 +548,17 @@ bool GMDBManager::addListOfRecordsToTable(const std::string tableName, const std //{ // // get table columns and format them for query // std::string tableColString = "(" + joinVectorStrings(m_tableNames.at(tableName), ", ") + ")"; -// +// // std::cout << "tableColString:" << tableColString << std::endl; -// +// // unsigned int nRecords = records.size(); // std::cout << "number of " << tableName << " records to insert into the DB:" << nRecords << std::endl; -// +// // // preparing the SQL query // QString queryStr("INSERT INTO %1 %2 VALUES "); // queryStr = queryStr.arg(QString::fromStdString(tableName)); // insert table name // queryStr = queryStr.arg(tableColString); // insert table columns -// +// //} diff --git a/GeoModelWrite/src/WriteGeoModel.cpp b/GeoModelWrite/src/WriteGeoModel.cpp index cee0f70..ef9b992 100644 --- a/GeoModelWrite/src/WriteGeoModel.cpp +++ b/GeoModelWrite/src/WriteGeoModel.cpp @@ -44,9 +44,18 @@ namespace GeoModelIO { // TODO: should go to an utility class + // FIXME: should go to an utility class std::string joinVectorStrings(std::vector<std::string> vec, std::string sep="") { std::string s; - for (const auto &piece : vec) s += (piece + sep); + unsigned int ii = 0; + for (const auto &piece : vec) { + ++ii; + if (ii == vec.size()) { + s += (piece); + } else { + s += (piece + sep); + } + } return s; } -- GitLab