diff --git a/fhem/contrib/DS_Starter/93_DbLog.pm b/fhem/contrib/DS_Starter/93_DbLog.pm
index a72c94494..81df42052 100644
--- a/fhem/contrib/DS_Starter/93_DbLog.pm
+++ b/fhem/contrib/DS_Starter/93_DbLog.pm
@@ -1,5 +1,5 @@
############################################################################################################################################
-# $Id: 93_DbLog.pm 27111 2023-01-23 19:06:28Z DS_Starter $
+# $Id: 93_DbLog.pm 27111 2023-01-28 19:06:28Z DS_Starter $
#
# 93_DbLog.pm
# written by Dr. Boris Neubert 2007-12-30
@@ -4908,6 +4908,71 @@ sub __DbLog_SBP_selectrowArray {
return ($err, @res);
}
+#################################################################
+# einfaches Query prepare, Rückgabe Statement Handle
+#################################################################
+sub __DbLog_SBP_prepareOnly {
+ my $name = shift;
+ my $dbh = shift;
+ my $query = shift;
+ my $subprocess = shift // q{};
+
+ my $err = q{};
+ my $sth;
+
+ eval{ $sth = $dbh->prepare ($query);
+ 1;
+ }
+ or do { $err = $@;
+ if ($subprocess) {
+ _DbLog_SBP_Log3Parent ( { name => $name,
+ level => 2,
+ msg => qq(ERROR - $err),
+ oper => 'log3parent',
+ subprocess => $subprocess
+ }
+ );
+ }
+ else {
+ Log3 ($name, 2, qq{DbLog $name - ERROR - $err});
+ }
+ };
+
+return ($err, $sth);
+}
+
+#################################################################
+# einfaches Query execute
+#################################################################
+sub __DbLog_SBP_executeOnly {
+ my $name = shift;
+ my $sth = shift;
+ my $subprocess = shift // q{};
+
+ my $err = q{};
+ my $result;
+
+ eval{ $result = $sth->execute();
+ 1;
+ }
+ or do { $err = $@;
+ if ($subprocess) {
+ _DbLog_SBP_Log3Parent ( { name => $name,
+ level => 2,
+ msg => qq(ERROR - $err),
+ oper => 'log3parent',
+ subprocess => $subprocess
+ }
+ );
+ }
+ else {
+ Log3 ($name, 2, qq{DbLog $name - ERROR - $err});
+ }
+ };
+
+return ($err, $sth, $result);
+}
+
#################################################################
# erstellt Statement Handle für Insert Daten in die
# angegebene Tabelle
@@ -5895,22 +5960,22 @@ sub _DbLog_chartQuery {
my $totalcount;
if (defined $countsql && $countsql ne "") {
- my $query_handle = $dbh->prepare($countsql)
- or return DbLog_jsonError("Could not prepare statement: " . $dbh->errstr . ", SQL was: " .$countsql);
+ ($err, my $query_handle) = __DbLog_SBP_prepareOnly ($name, $dbh, $countsql);
+ return DbLog_jsonError("Could not prepare statement: " .$err. ", SQL was: " .$countsql) if($err);
- $query_handle->execute()
- or return DbLog_jsonError("Could not execute statement: " . $query_handle->errstr);
+ ($err, $query_handle) = __DbLog_SBP_executeOnly ($name, $query_handle);
+ return DbLog_jsonError("Could not execute statement: " . $err) if($err);
my @data = $query_handle->fetchrow_array();
$totalcount = join ", ", @data;
}
- my $query_handle = $dbh->prepare($sql)
- or return DbLog_jsonError("Could not prepare statement: " . $dbh->errstr . ", SQL was: " .$sql); # prepare the query
-
- $query_handle->execute()
- or return DbLog_jsonError("Could not execute statement: " . $query_handle->errstr); # execute the query
-
+ ($err, my $query_handle) = __DbLog_SBP_prepareOnly ($name, $dbh, $sql);
+ return DbLog_jsonError("Could not prepare statement: " .$err. ", SQL was: " .$sql) if($err);
+
+ ($err, $query_handle) = __DbLog_SBP_executeOnly ($name, $query_handle);
+ return DbLog_jsonError("Could not execute statement: " . $err) if($err);
+
my $columns = $query_handle->{'NAME'};
my $columncnt;
@@ -8966,7 +9031,7 @@ return;