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:
Torsten Schulz (local)
2025-08-31 23:37:12 +02:00
committed by Torsten (PC)
parent 8d3e0423e7
commit 91420b9973

View File

@@ -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
} }