Ich habe eine Frage zu einer Zeichenfolge in einer JDBC-SQL-Abfrage verwenden. Hier sind zwei Beispiele und ich erwarte, dass beide funktionieren, aber sie nicht.
Arbeits Version ...
tabl = "Action"
query = "SHOW FULL COLUMNS FROM `Action`;"
println " "+ query
dbConnection.eachRow(query){
In Fehler Variante:
tabl = "Action"
query = "SHOW FULL COLUMNS FROM `${tabl}`;"
println " "+ query
dbConnection.eachRow(query){
Der Fehler kommt zurück als SQL-Syntax-Fehler. Wie Sie sehen können, sind die Aussagen textuell identisch.
Der Ausgang zeigen die Aussage, dann ein Fehler:
SHOW FULL COLUMNS FROM `Action`;
May 20, 2013 10:52:01 AM groovy.sql.Sql eachRow
WARNING: Failed to execute: SHOW FULL COLUMNS FROM `?`; because:
Parameter index out of range (1 > number of parameters, which is 0).
May 20, 2013 10:52:01 AM groovy.sql.Sql eachRow
Ich denke, dass gerade Groovy ist nach einem Schuldigen zu suchen versuchen. Wenn ich die Literal-Zeichenfolge an die JDBC-Verbindung füttere, funktioniert sie für die Tabelle 'Aktion' einwandfrei.
Ich hoffe jemand den Fehler erklären kann, und ein Update anbieten.
Für diejenigen, Lesen, fand ich diese Option als Abhilfe:
query = "SHOW FULL COLUMNS FROM `"+ tabl.toString() +"`;"
Zwar gibt es eine weniger ausführliche Option sein, mit "+"; Für mich fühlt es sich an, als ob die Verwendung von $ {tabl} funktionieren sollte.
Vielen Dank im Voraus,
Haben Sie versucht, mit ' 'SHOW FULL COLUMNS FROM $ {Tabl};'' (man beachte den Apostroph statt doppelte Anführungszeichen)? – dmahapatro
möglich Duplikat von [dynamisch die Datenbank in einer SQL-Abfrage setzen] (http://stackoverflow.com/questions/2267756/dynamically-set-the-db-in-a-sql-query) –