2016-10-16 1 views
1

Ich möchte, dass meine Datenbank (H2) mit dem folgenden Code abfragen:Unbekannter Datentyp Fehler für Parameter in select-Klausel

PreparedStatement x = connection.prepareStatement("INSERT INTO tree(ancestor, desc) (select ancestor,? from tree where desc = ? union all select ?,?)"); 
x.setInt(1,99219); 
x.setInt(2,4); 
x.setInt(3,99219); 
x.setInt(4,99219); 

aber es funktioniert nicht und ich erhalte die folgende Fehlermeldung:

org.h2.jdbc.JdbcSQLException: Unknown data type: "?, ?"; SQL statement:insert into tree(ancestor, desc) (select ancestor,? from tree where desc = ? union all select ?,?) [50004-192] 

Das Ausführen der Abfrage in der Konsole (ohne JDBC) funktioniert einwandfrei. Was ist falsch an diesem Code?

Antwort

0
"INSERT INTO tree(ancestor, desc) (select ancestor,? from tree where desc = ? union all select ?,?)" 

Diese SQL-Anweisung ist unvollständig. Es ist ein FROM Teil danach mising:

union all select ?,? 
+0

aber es funktioniert in Raw-Datenbankabfrage. Ich lerne das von [Link] http://image.slidesharecdn.com/modelsforhierarchicaldata-10052-phpapp02/95/models-for-hierarchical-data-53-638.jpg?cb=1372768889 – drkdrk

+0

Ok. Du hattest Recht. Hinzufügen – drkdrk

0

Die Spalte von UNION zurück wählen nach Typ in der ersten wählen Sie die Spalten entsprechen haben. Sie können eine explizite Besetzung durchführen.