From edbabf973d3c2246cc90e884b8397b4527282880 Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Mon, 19 Feb 2018 19:48:23 +0100
Subject: [PATCH] No PreparedStatement dynamic table and attribute parameter

---
 Doc/Sda1/jdbc.xml | 55 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/Doc/Sda1/jdbc.xml b/Doc/Sda1/jdbc.xml
index 65469d341..8bb0ef8c3 100644
--- a/Doc/Sda1/jdbc.xml
+++ b/Doc/Sda1/jdbc.xml
@@ -2499,6 +2499,61 @@ System.out.println("Successfully inserted " + updateCount + " dataset(s)");
           <para>Problem solved!</para>
         </figure>
 
+        <figure xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport">
+          <title>No dynamic table support</title>
+
+          <programlisting language="java">PreparedSatatement statement = 
+  connection.prepareStatement("SELECT ? <co
+              linkends="sda1_jdbc_fig_preparedNoDynamicTableSupport-1.2"
+              xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport-1.2-co"/> from ?" <co
+              linkends="sda1_jdbc_fig_preparedNoDynamicTableSupport-2.2"
+              xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport-2.2-co"/>);      
+statement.setString(1, "birthday") <co
+              linkends="sda1_jdbc_fig_preparedNoDynamicTableSupport-3.2"
+              xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport-3.2-co"/>;
+statement.setString(2, "Persons") <co
+              linkends="sda1_jdbc_fig_preparedNoDynamicTableSupport-4.2"
+              xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport-4.2-co"/>;
+ResultSet rs = statement.executeQuery() <co
+              linkends="sda1_jdbc_fig_preparedNoDynamicTableSupport-5"
+              xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport-5-co"/>;</programlisting>
+
+          <para>In a nutshell: <emphasis role="red">Only attribute value
+          literals may be parameterized.</emphasis></para>
+        </figure>
+
+        <calloutlist>
+          <callout arearefs="sda1_jdbc_fig_preparedNoDynamicTableSupport-1.2-co"
+                   xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport-1.2">
+            <para>Providing an attributes name as parameter.</para>
+          </callout>
+
+          <callout arearefs="sda1_jdbc_fig_preparedNoDynamicTableSupport-2.2-co"
+                   xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport-2.2">
+            <para>Providing the table name to be queried as parameter.</para>
+          </callout>
+
+          <callout arearefs="sda1_jdbc_fig_preparedNoDynamicTableSupport-3.2-co"
+                   xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport-3.2">
+            <para>Setting the desired attributes name intending:</para>
+
+            <programlisting language="none">SELECT <emphasis role="red">birthday</emphasis> FROM ...</programlisting>
+          </callout>
+
+          <callout arearefs="sda1_jdbc_fig_preparedNoDynamicTableSupport-4.2-co"
+                   xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport-4.2">
+            <para>Setting the table name to be queried intending:</para>
+
+            <programlisting language="none">SELECT birthday FROM <emphasis
+                role="red">Persons</emphasis></programlisting>
+          </callout>
+
+          <callout arearefs="sda1_jdbc_fig_preparedNoDynamicTableSupport-5-co"
+                   xml:id="sda1_jdbc_fig_preparedNoDynamicTableSupport-5">
+            <para>Fails: Only attribute value literals are allowed.</para>
+          </callout>
+        </calloutlist>
+
         <qandaset defaultlabel="qanda" xml:id="exerciseSqlInjectPrepare">
           <title>Prepared Statements to keep the barbarians at the
           gate</title>
-- 
GitLab