Erweitere die Unterstützung für vorbereitete Abfragen in der Datenbank, indem die Methode exec_params für bis zu 10 Parameter implementiert wird. Füge eine Fehlerbehandlung für zu viele Parameter hinzu.
This commit is contained in:
committed by
Torsten (PC)
parent
8d3e0423e7
commit
91420b9973
@@ -98,7 +98,7 @@ Database::FieldList Database::execute(const std::string& stmtName,
|
|||||||
} else if (params.size() == 5) {
|
} else if (params.size() == 5) {
|
||||||
res = txn.exec_prepared(stmtName, params[0], params[1], params[2], params[3], params[4]);
|
res = txn.exec_prepared(stmtName, params[0], params[1], params[2], params[3], params[4]);
|
||||||
} else {
|
} else {
|
||||||
// Für mehr als 5 Parameter, verwende exec_params
|
// Für mehr als 5 Parameter, verwende exec_params mit einzelnen Parametern
|
||||||
std::string sql = "EXECUTE " + stmtName;
|
std::string sql = "EXECUTE " + stmtName;
|
||||||
if (!params.empty()) {
|
if (!params.empty()) {
|
||||||
sql += "(";
|
sql += "(";
|
||||||
@@ -108,7 +108,22 @@ Database::FieldList Database::execute(const std::string& stmtName,
|
|||||||
}
|
}
|
||||||
sql += ")";
|
sql += ")";
|
||||||
}
|
}
|
||||||
res = txn.exec_params(sql, params);
|
|
||||||
|
// Konvertiere vector zu einzelnen Parametern für exec_params
|
||||||
|
if (params.size() == 6) {
|
||||||
|
res = txn.exec_params(sql, params[0], params[1], params[2], params[3], params[4], params[5]);
|
||||||
|
} else if (params.size() == 7) {
|
||||||
|
res = txn.exec_params(sql, params[0], params[1], params[2], params[3], params[4], params[5], params[6]);
|
||||||
|
} else if (params.size() == 8) {
|
||||||
|
res = txn.exec_params(sql, params[0], params[1], params[2], params[3], params[4], params[5], params[6], params[7]);
|
||||||
|
} else if (params.size() == 9) {
|
||||||
|
res = txn.exec_params(sql, params[0], params[1], params[2], params[3], params[4], params[5], params[6], params[7], params[8]);
|
||||||
|
} else if (params.size() == 10) {
|
||||||
|
res = txn.exec_params(sql, params[0], params[1], params[2], params[3], params[4], params[5], params[6], params[7], params[8], params[9]);
|
||||||
|
} else {
|
||||||
|
// Für noch mehr Parameter, verwende eine einfachere Lösung
|
||||||
|
throw std::runtime_error("Zu viele Parameter für prepared statement: " + std::to_string(params.size()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user