2017-06-19 8 views
-3

Ich habe die folgende Abfrage (es ist eigentlich immer komplexer, aber nur eine grundlegende ein für diesen Zweck verwendet)SQL-Abfrage funktioniert in mySQL, aber nicht in Java

"DECLARE @x1 FLOAT; SET @x1 = 8; Select @x1" 

, die direkt mit mySQL Datenbank funktioniert gut, aber wenn ich es in Java wie folgt aus:

String sqlFormula = "DECLARE @x1 FLOAT; SET @x1 = 8; Select @x1"; 

ich diese Abfrage in der gleichen Art und Weise schicke ich andere tun, die gut funktionieren, aber mir SQL-Syntaxfehler gibt. Benötigt Java eine Variablendeklaration in einem anderen Format?

Der Fehler ist:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE @x1 FLOAT; SET @x1 = 8; Select @x1' at line 1

Welche nicht wirklich helfen, wie es auf der ganzen Linie bezieht.

auf die Zeichenfolge beginnen und beenden Hinzufügen:

String sqlFormula = "BEGIN DECLARE @x1 FLOAT; SET @x1 = 8; Select @x1 END"; 

dies das Bit Begin Dabei ist in Ordnung, aber es scheint END der Mitteilung hinzuzufügen. Der Fehler meldet Syntaxfehler:

'DECLARE @x1 FLOAT; SET @x1 = 8; Select @x1 END' at line 1

Danke.

+1

* "So wie ich andere mache" * Und wie ist das? --- * "gib mir SQL Syntax Fehler" * Zeigen Sie uns den Fehler. – Andreas

+0

Bitte seien Sie vorsichtig beim Markieren. mysql <> SQL-Server. –

+0

@Andreas Ich habe oben bearbeitet, um den Fehler zu zeigen. – MXG123

Antwort

-1

Wie sich herausstellte, gab es nichts Falsches an der Syntax, es waren die mehrfachen Anweisungen in einer Abfrage, die es nicht mochte. Ich habe sie einzeln implementiert und es hat funktioniert. Es ist nicht ideal, aber ich werde es tun, bis ich später eine vorbereitete Aussage mache.

+0

Siehe Verbindungseigenschaft ['allowMultiQueries'] (https://dev.mysql.com/doc/connector-j/5.1/de/connector-j-reference-configuration-properties.html): * Zulassen der Verwendung von '; " um mehrere Abfragen während einer Anweisung zu begrenzen (true/false), wird standardmäßig auf 'false' gesetzt. * – Andreas

+0

Ja. das habe ich schon gemacht. "? AllowMultiQueries = TRUE" an Datenbank beim Verbinden angehängt. Kein Unterschied im Ergebnis. – MXG123

Verwandte Themen