Faire une base de données DB2 insérer avec un select et les paramètres
Je veux faire quelque chose comme ceci:
INSERT INTO TABLEA
(
COLUMN1, COLUMN2, COLUMN 3
)
SELECT FOOBAR, DOOBAR, ?
FROM TABLEB
Puis envoyer ce JDBC via Spring JDBC pour la mise à jour...
simpleJdbcTemplate.update( mySqlFromAbove, someVariableToReplaceQuestionMark );
Est-ce même possible? Il serait bon travail, si je remplace le point d'interrogation avec la valeur codée en dur lors de la construction de ma requête SQL, mais je ne veux pas m'ouvrir à d'injection SQL...
Edit -
Je reçois
exception imbriquée est com.ibm.db2.ccc.c.SqlException: DB2 SQL error: SQLCODE: -418, SQLSTATE: 42610, SQLERRMC: null
Ce qui semble indiquer
Invalide l'utilisation d'un marqueur de paramètre ?
OriginalL'auteur bwawok | 2010-09-01
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour type-cast votre marqueur de paramètre de sorte DB2 sait à quoi s'attendre.
Par exemple:
Évidemment, de lancer pour le type approprié -- int est juste un exemple.
Travaillé si j'ai fait un spécifique jeté.. comme cast(? en tant que char(8)).. juste en tant que char n'était pas assez
OriginalL'auteur Ian Bjorhovde
Voici la DB2 SQL de Référence du Message. Voici un extrait de la pertinence pour le SQLCODE et SQLSTATE vous avez récupéré:
Malheureusement, ce n'est pas la réponse à votre problème depuis votre SQL semblent à l'air très bien. Après Googler un peu plus l'aspect que le pilote JDBC DB2 n'a tout simplement pas manger
INSERT INTO ... SELECT ...
déclarations dans unPreparedStatement
. Il est difficile de savoir si ce qui manque dans le Message SQL de Référence ou d'un bogue dans le pilote JDBC.OriginalL'auteur BalusC
Il devrait fonctionner correctement. Et +1 pour le "no SQL injection".
De partager et de profiter.
OriginalL'auteur Bob Jarvis
Nous avons été faire la même erreur, et nous avons résolu le problème en recyclant le serveur. Dans le doute, reboot.
OriginalL'auteur Sean