Änderungen von Dokument DB-Abfragen


Von Version 16.2
bearbeitet von gru
am 18.09.2023, 17:08
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 2.1
bearbeitet von gru
am 29.06.2021, 14:19
Änderungskommentar: Renamed back-links.

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -1,6 +1,6 @@
1 1  {{content/}}
2 2  
3 -Datenbankabfragen verhalten sich ähnlich wie [[Datenquellen>>doc:Sources]] (XML, CSV, JSON), werden jedoch nicht statisch hinterlegt, sondern dynamisch aus einer Datenbank ausgelesen. Prinzipiell sollten an dieser Stelle ausschließlich Abfragen bzw. SELECT-Statements hinterlegt werden. Andere Statements (INSERT, etc.) können funktionieren - Dies ist aber von Datenbanktyp zu Datenbanktyp unterschiedlich und es wird davon abgeraten. Stattdessen sollten solche Statements mit der entsprechenden Workflow-Aktion [[Datenbank-Abfrage>>doc:Formcycle.Designer.Workflow.Actions.SQLStatement]] gemacht werden.
3 +Datenbankabfragen verhalten sich ähnlich wie [[Datenquellen>>doc:Sources]] (XML, CSV, JSON), werden jedoch nicht statisch hinterlegt, sondern dynamisch aus einer Datenbank ausgelesen.
4 4  
5 5  {{info}}
6 6  Bei der Erstellung einer Abfrage wird eine bereits angelegte [[Verbindung>>doc:DBConnections]] zu einer Datenbank benötigt.
... ... @@ -23,6 +23,18 @@
23 23  {{/html}}
24 24  
25 25  
26 +
27 +{{html wiki="true"}}
28 +<div class='xm-figure xm-float-right xm-clear-h2' data-alt='Die Konfigurationsoberfläche zum Anlegen einer SQL-Abfrage besteht aus vier Teilen: (1) Liste der existierenden Datenbank-Abfragen, (2) Editor zum Definieren der SQL-Abfrage, (3) Einstellungen der Datenbank-Abfrage, (4) Konsole zum Testen der Datenbank-Abfrage.'><div class='xm-figure-inner' style='width:310px'>{{lightbox image='data_db_query_de.png' width='300' group='$height' group='$group' title='Die Konfigurationsoberfläche zum Anlegen einer SQL-Abfrage besteht aus vier Teilen: (1) Liste der existierenden Datenbank-Abfragen, (2) Editor zum Definieren der SQL-Abfrage, (3) Einstellungen der Datenbank-Abfrage, (4) Konsole zum Testen der Datenbank-Abfrage.'/}}<div class='xm-figure-caption'>Die Konfigurationsoberfläche zum Anlegen einer SQL-Abfrage besteht aus vier Teilen: (1) Liste der existierenden Datenbank-Abfragen, (2) Editor zum Definieren der SQL-Abfrage, (3) Einstellungen der Datenbank-Abfrage, (4) Konsole zum Testen der Datenbank-Abfrage.</div></div></div>
29 +{{/html}}
30 +
31 +
32 +
33 +{{html wiki="true"}}
34 +<div class='xm-figure xm-float-right xm-clear-global' data-alt='Die Konfigurationsoberfläche zum Anlegen einer SQL-Abfrage besteht aus vier Teilen: (1) Liste der existierenden Datenbank-Abfragen, (2) Editor zum Definieren der SQL-Abfrage, (3) Einstellungen der Datenbank-Abfrage, (4) Konsole zum Testen der Datenbank-Abfrage.'><div class='xm-figure-inner' style='width:310px'>{{lightbox image='data_db_query_de.png' width='300' group='$height' group='$group' title='Die Konfigurationsoberfläche zum Anlegen einer SQL-Abfrage besteht aus vier Teilen: (1) Liste der existierenden Datenbank-Abfragen, (2) Editor zum Definieren der SQL-Abfrage, (3) Einstellungen der Datenbank-Abfrage, (4) Konsole zum Testen der Datenbank-Abfrage.'/}}<div class='xm-figure-caption'>Die Konfigurationsoberfläche zum Anlegen einer SQL-Abfrage besteht aus vier Teilen: (1) Liste der existierenden Datenbank-Abfragen, (2) Editor zum Definieren der SQL-Abfrage, (3) Einstellungen der Datenbank-Abfrage, (4) Konsole zum Testen der Datenbank-Abfrage.</div></div></div>
35 +{{/html}}
36 +
37 +
26 26  * Öffnen Sie das Modul "DB-Abfragen" und klicken Sie auf die Schaltfläche "Neu" {{ficon name="plus-circle-outline"/}} in der Kopzeile der Liste (siehe [[Abbildung>>||anchor="fig_data_db_query"]]).
27 27  * Für die Datenbank-Abfrage werden folgende Daten benötigt:
28 28  ** **Name**: Ein eindeutiger Name der Datenbank-Abfrage
... ... @@ -33,7 +33,7 @@
33 33  
34 34  Das eingegebene Statement wird als //Prepared-Statement// ausgeführt, so dass keine sogenannte //SQL-Injection// moglich ist. Verwenden Sie daher auch keine Hochkommas. Prinzipiell können auch Übergabeparameter verwendet werden. In der Abfrage setzen Sie an die Stelle des Übergabeparameters ein Fragezeichen {{code language="none"}}?{{/code}}.
35 35  
36 -In den SQL-Statements können [[Platzhalter>>doc:Formcycle.UserInterface.Variables.WebHome]] verwendet werden.
48 +{{version major="6" minor="4" patch="0"/}} In den SQL-Statements können [[Platzhalter>>doc:Formcycle.UserInterface.Variables.WebHome]] verwendet werden.
37 37  
38 38  == Verwenden der Abfrage ==
39 39  
... ... @@ -56,10 +56,9 @@
56 56  
57 57  Wenn möglich sollte für neue Projekte anstelle des Parameters //queryParameter// der Parameter //queryParameterValues// verwendet werden, da //queryParameter// in einer zukünftigen Version von {{formcycle/}} nicht mehr unterstützt werden wird.|Nein
58 58  |delimiter|Trennzeichen, welches die einzelnen Werte des //queryParameter// trennt. Standardmäßig ein Komma {{code language="none"}},{{/code}}.
59 -|jsonPath {{version major="7" minor="3"/}}|Dieser Parameter ermöglicht die Angabe eines JSON-Path-Ausdrucks welcher auf der Rückgbabe der Abfrage Server-seitig angewand wird. Das Beispiel //$.returnValue[0]// gibt die Werte des ersten Ergebnisses der Abfrage zurück.|Nein
60 -
71 +
61 61  Wenn möglich sollte für neue Projekte anstelle der Parameter //delimiter// und //queryParameter// der Parameter //queryParameterValues// verwendet werden, da //delimiter// in einer zukünftigen Version von {{formcycle/}} nicht mehr unterstützt werden wird.|Nein
62 -|queryParameterValues|Ab {{formcycle/}} Version 6.6.3 zur Verfügung stehende Alternative zu den Parametern //queryParameter// und //delimiter//. Wie diese Parameter ist auch //queryParameterValues// nur dann erforderlich, wenn innerhalb der Datenbank-Abfrage Platzhalter in Form eines Fragezeichens {{code language="none"}}?{{/code}} verwendet werden. Ist dies der Fall, werden die einzelnen Abfrageparameter hintereinander jeweils als ein eingener Parameter //queryParameterValues// übergegeben, wodurch auch die Verwendung des Parameters //delimiter// entfällt.|Nein
73 +|queryParameterValues|{{version major="6" minor="6" patch="3"/}}Ab {{formcycle/}} Version 6.6.3 zur Verfügung stehende Alternative zu den Parametern //queryParameter// und //delimiter//. Wie diese Parameter ist auch //queryParameterValues// nur dann erforderlich, wenn innerhalb der Datenbank-Abfrage Platzhalter in Form eines Fragezeichens {{code language="none"}}?{{/code}} verwendet werden. Ist dies der Fall, werden die einzelnen Abfrageparameter hintereinander jeweils als ein eingener Parameter //queryParameterValues// übergegeben, wodurch auch die Verwendung des Parameters //delimiter// entfällt.|Nein
63 63  |varName|Gibt den Namen des JSON-Response-Objektes an. Ist dieser nicht gesetzt, so besitzt das JSON-Objekt keinen expliziten Namen.|Nein
64 64  {{/table}}
65 65  
... ... @@ -93,7 +93,7 @@
93 93  
94 94  == Sonderfall Auswahlelement ==
95 95  
96 -Soll das Ergebnis einer Datenbankabfrage direkt in ein [[Auswahlelement>>doc:Formcycle.Designer.Form.FormElements.Selection]] geladen werden, erfolgt dies über die Eigenschaften des Auswahlelements im {{designer case="dat"/}}.
107 +Soll das Ergebnis einer Datenbankabfrage direkt in ein [[Auswahlelement>>doc:Formcycle.FormDesigner.FormElements.Selection]] geladen werden, erfolgt dies über die Eigenschaften des Auswahlelements im {{designer case="dat"/}}.
97 97  
98 98  {{info}}
99 99  Abfragen die in Auswahlelementen eingesetzt werden, dürfen kein "?" beinhalten, da diese Abfragen einen Übergabeparameter erwarten und dies bei Auswahlelementen nicht möglich ist. Abfragen mit einem "?" werden nicht als Datenquelle bei Auswahlelementen angeboten.
... ... @@ -103,7 +103,7 @@
103 103  Verwenden des Ergebnises einer Datenbankabfrage als Datenquelle für ein Auswahlelement im {{designer case="dat"/}}.
104 104  {{/figure}}
105 105  
106 -Der Inhalt der SQL-Datenbankabfrage wird in einem [[Auswahlelement>>doc:Formcycle.Designer.Form.FormElements.Selection]] in folgender Reihenfolge verwendet.
117 +Der Inhalt der SQL-Datenbankabfrage wird in einem [[Auswahlelement>>doc:Formcycle.FormDesigner.FormElements.Selection]] in folgender Reihenfolge verwendet.
107 107  
108 108  {{box}}
109 109  Sichtbarer Wert, Übertragener Wert, Optionaler Wert 1, Optionaler Wert 2, ...
... ... @@ -116,11 +116,16 @@
116 116  Werden zudem noch ein oder mehrere //optionale Werte// von der SQL-Datenbankabfrage zurückgegeben, so können diese per //Javascript// über den folgenden //jQuery-Selector// abgerufen werden.
117 117  
118 118  {{code language="javascript"}}
119 -$('[name=sel2]').find('option:selected').data('col2') // Selektiert die Aktive Option des Auswahlelements mit Name 'sel2' und liefert den ersten optionalen Wert zurück.
130 +$('[name=sel2]').find('option:selected').attr('col2') // Selektiert die Aktive Option des Auswahlelements mit Name 'sel2' und liefert den ersten optionalen Wert zurück.
120 120  {{/code}}
121 121  
122 122  == Beipiele ==
123 123  
135 +{{info}}
136 +{{version major="6" minor="6" patch="3"/}}Ab {{formcycle/}} Version 6.6.3 kann Anstelle des Parameters //queryParameter// der Parameter //queryParameterValues// verwendet werden. Letzterer wird für neue Projekte empfohlen, da der Parameter //queryParameter// in einer zukünftigen Version von {{formcycle/}} nicht mehr unterstützt werden wird. In den folgenden Beispielen wird für jede SQL-Abfrage daher jeweils eine Servlet-Abfrage mit //queryParameter// und mit //queryParameterValues// gezeigt.
137 +{{/info}}
138 +
139 +
124 124  {{code language="sql"}}
125 125  select name, vorname from tabelle where vorname like(?)
126 126  {{/code}}
... ... @@ -128,6 +128,9 @@
128 128  Diese SQL-Abfrage liefert die Namen aller Personen zurück, die einen bestimmten Vornamen haben. Nach welchem Vornamen gesucht werden soll, kann über einen URL-Parameter angegeben werden.
129 129  
130 130  Abfrage per Servlet:
147 +{{code language="none"}}http://meinserver/formcycle/datenquelledb?mandantName=ich&name=demo&queryParameter=Mustermann{{/code}}
148 +
149 +{{version major="6" minor="6" patch="3"/}}Ab {{formcycle/}} Version 6.6.3 mögliche Abfrage per Servlet:
131 131  {{code language="none"}}http://meinserver/formcycle/datenquelledb?mandantName=ich&name=demo&queryParameterValues=Mustermann{{/code}}
132 132  \\
133 133  
... ... @@ -138,6 +138,9 @@
138 138  Diese SQL-Abfrage liefert die Person mit einer bestimmten ID zurück. Die ID wird als URL-Parameter übergeben.
139 139  
140 140  Abfrage per Servlet:
160 +{{code language="none"}}http://meinserver/formcycle/datenquelledb?mandantName=ich&name=demo&queryParameter=100{{/code}}
161 +
162 +{{version major="6" minor="6" patch="3"/}}Ab {{formcycle/}} Version 6.6.3 mögliche Abfrage per Servlet:
141 141  {{code language="none"}}http://meinserver/formcycle/datenquelledb?mandantName=ich&name=demo&queryParameterValues=100{{/code}}
142 142  \\
143 143  
... ... @@ -148,6 +148,9 @@
148 148  Diese SQL-Abfrage liefert die Namen aller Personen zurück, die an einem bestimmten Ort wohnen. Der Ort mit Postleitzahl wird über URL-Parameter übergeben.
149 149  
150 150  Abfrage per Servlet:
173 +{{code language="none"}}http://meinserver/formcycle/datenquelledb?mandantName=ich&name=demo&queryParameter=Entenhausen,02442{{/code}}
174 +
175 +{{version major="6" minor="6" patch="3"/}}Ab {{formcycle/}} Version 6.6.3 mögliche Abfrage per Servlet:
151 151  {{code language="none"}}http://meinserver/formcycle/datenquelledb?mandantName=ich&name=demo&queryParameterValues=Entenhausen&queryParameterValues=02442{{/code}}
152 152  \\
153 153  
... ... @@ -158,8 +158,11 @@
158 158  Diese SQL-Abfrage liefert die Namen aller Personen zurück, die in einem Ort wohnen der mit den gesuchten Buchstaben/Zeichen **beginnt**. Das '%'-Zeichen dient als Platzhalter für beliebig viele beliebige Zeichen. Je nach verwendetem DBMS kann die Syntax geringfügig abweichen (hier: MySQL). Der gesuchte Wert wird über URL-Parameter übergeben.
159 159  
160 160  Abfrage per Servlet:
186 +{{code language="none"}}http://meinserver/formcycle/datenquelledb?mandantName=ich&name=demo&queryParameter=Entenhau{{/code}}
187 +
188 +{{version major="6" minor="6" patch="3"/}}Ab {{formcycle/}} Version 6.6.3 mögliche Abfrage per Servlet:
161 161  {{code language="none"}}http://meinserver/formcycle/datenquelledb?mandantName=ich&name=demo&queryParameterValues=Entenhau{{/code}}
162 -
190 +\\
163 163  
164 164  {{code language="sql"}}
165 165  select name, vorname from tabelle where lower(ort) like concat('%', lower(?), '%')
... ... @@ -168,4 +168,7 @@
168 168  Diese SQL-Abfrage liefert die Namen aller Personen zurück, die in einem Ort wohnen der die gesuchten Buchstaben/Zeichen **beinhaltet**. Hierbei ist spielt die Klein/Groß-Schreibung keine Rolle, da die Abfrage in der Datenbank sowohl die Werte-Spalte als auch den eigentlichen Filter-Wert zu Kleinschreibung umwandelt (lower(...)). Der gesuchte Wert wird über URL-Parameter übergeben.
169 169  
170 170  Abfrage per Servlet:
199 +{{code language="none"}}http://meinserver/formcycle/datenquelledb?mandantName=ich&name=demo&queryParameter=teHaUs{{/code}}
200 +
201 +{{version major="6" minor="6" patch="3"/}}Ab {{formcycle/}} Version 6.6.3 mögliche Abfrage per Servlet:
171 171  {{code language="none"}}http://meinserver/formcycle/datenquelledb?mandantName=ich&name=demo&queryParameterValues=teHaUs{{/code}}