# setParameter geht nicht, wie dann?



## The_S (21. Aug 2009)

Hallo,

ich habe einen SQL für eine DB2, bei der an einer bestimmten Stelle Parameter gesetzt werden müssen. Diese Stelle unterstützt die DB2/der Treiber jedoch nicht für Parameter.

Ein Beispiel:


```
SELECT *, ? FROM table
```

oder


```
INSERT INTO table (id, value1, value2)
SELECT tbl2.id AS id, value1, value2
FROM table2 tbl2
LEFT OUTER JOIN (values ?, ?, ?) AS val1_tbl (value1) ON 1=1
LEFT OUTER JOIN (values ?) AS val2_tbl (value2) ON 1=1
WHERE tbl2.aValue = ?
```

Bei bspw. nem int ist das ja noch kein Problem, den setz ich eben ohne setParameter-Aufruf. Aber wie setze ich bspw. ein Date an einer nicht für Parameter erlaubten Stelle?

Danke!

PS: Ich hoffe, ich war halbwegs verständlich


----------



## sparrow (21. Aug 2009)

Ich hatte vor einiger Zeit ein ähnliches Problem und habe keien andere Möglichkeit gefunden als ohne PreparedStatement auszukommen, bzw. den String für das PreparedeStatement im Vorfeld schon einmal selber so zurecht zu biegen, dass die ungültigen Felder dann bereits belegt waren.

Allerdings kommt man dann wieder nicht drumherum die Werte selbst zu escapen, etc.

Wäre auch sehr an einer Lösung interessiert.

Bist du sicher, dass es am Treiber liegt?


----------



## The_S (21. Aug 2009)

Problem aus dem ersteresnBeispiel liegt an der DB2, zweiteres am Treiber/SAP.


----------

