From 757aa6392f445a790099d8cfa2050d53b3827419 Mon Sep 17 00:00:00 2001 From: Hendrik Brummermann Date: Thu, 8 Jun 2023 21:02:58 +0200 Subject: [PATCH] added new method queryAsMap --- src/marauroa/server/db/DBTransaction.java | 25 ++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/marauroa/server/db/DBTransaction.java b/src/marauroa/server/db/DBTransaction.java index 9296051e..43a5c884 100644 --- a/src/marauroa/server/db/DBTransaction.java +++ b/src/marauroa/server/db/DBTransaction.java @@ -1,5 +1,5 @@ /*************************************************************************** - * (C) Copyright 2003-2011 - Marauroa * + * (C) Copyright 2003-2023 - Marauroa * *************************************************************************** *************************************************************************** * * @@ -17,6 +17,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Arrays; +import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; @@ -59,6 +60,8 @@ protected void setThread(Thread thread) { /** * prints an error if a DBTransaction is accessed outside the thread * it was bound to. + * + * @param acceptUnused do no report accessing an available DBTransaction */ private void ensureCorrectThread(boolean acceptUnused) { if (thread == null) { @@ -202,6 +205,26 @@ public ResultSet query(String query, Map params) throws SQLExcep return databaseAdapter.query(sql); } + /** + * queries the database and returns map with one entry per row. + * + * @param query SQL statement + * @param params parameter values + * @return ResultSet + * @throws SQLException in case of an database error + */ + @SuppressWarnings("unchecked") + public Map queryAsMap(String query, Map params) throws SQLException { + ensureCorrectThread(false); + String sql = subst(query, params); + ResultSet resultSet = databaseAdapter.query(sql); + Map res = new HashMap(); + while (resultSet.next()) { + res.put((K) resultSet.getObject(1), (V) resultSet.getObject(2)); + } + return res; + } + /** * queries the database and returns the first column in the first row as integer (for example for a count(*)). *