From 91420b9973183b40475a6311faf20e03df50770c Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sun, 31 Aug 2025 23:37:12 +0200 Subject: [PATCH] =?UTF-8?q?Erweitere=20die=20Unterst=C3=BCtzung=20f=C3=BCr?= =?UTF-8?q?=20vorbereitete=20Abfragen=20in=20der=20Datenbank,=20indem=20di?= =?UTF-8?q?e=20Methode=20exec=5Fparams=20f=C3=BCr=20bis=20zu=2010=20Parame?= =?UTF-8?q?ter=20implementiert=20wird.=20F=C3=BCge=20eine=20Fehlerbehandlu?= =?UTF-8?q?ng=20f=C3=BCr=20zu=20viele=20Parameter=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/database.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/database.cpp b/src/database.cpp index ab994ab..811d405 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -98,7 +98,7 @@ Database::FieldList Database::execute(const std::string& stmtName, } else if (params.size() == 5) { res = txn.exec_prepared(stmtName, params[0], params[1], params[2], params[3], params[4]); } 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; if (!params.empty()) { sql += "("; @@ -108,7 +108,22 @@ Database::FieldList Database::execute(const std::string& stmtName, } 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 }