2013-06-15 6 views
0

Mon programme exécute la requête INSERT. Quand je le lance, je reçois une erreurJava + MySQL - Erreur de syntaxe mais l'instruction est correcte

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser à proximité « INSERT INTO mots (Lang1, lang2, catégorie, lang2_code, utilisateur) SELECT 'ahoj', 'enfer' à la ligne 1

I tenté d'imprimer la déclaration proprement dite à la stdout:

SET @lang:='Angličtina', @categ:='Nová'; 
INSERT INTO words(lang1, lang2, category, lang2_code, user) 
SELECT 'ahoj', 'hello', c.id, l.id, 1 FROM categories c, languages l 
WHERE c.name = @categ AND l.name = @lang; 

Comme vous pouvez le voir, la déclaration est modifiée dans le journal. 'hell' au lieu de 'hello'. Quand je copie cela dans la ligne de commande mysql et que je l'exécute, cela fonctionne très bien, donc je suppose que le problème est dans le JDBC quelque part.

+1

pouvez-vous partager votre code java? –

Répondre

1

Ce n'est pas une instruction. Si vous souhaitez utiliser plus d'une instruction à la fois, n'utilisez pas un PreparedStatement mais par exemple addBatch mais il semble que vous devez simplement émettre 2 instructions JDBC, l'une après l'autre.

+0

Et si j'ai besoin du 'preparedStatement'? –

+2

Ensuite, utilisez ** 2 ** preparedStatement, pas un. Vous ne pouvez pas avoir un point-virgule au milieu d'une déclaration, préparée ou non. –

+0

ok s'il n'y a pas d'autre option, alors je suppose que c'est la réponse dont j'avais besoin, merci –