Ho una domanda sull'utilizzo di una stringa in una query SQL JDBC. Ecco due esempi e mi aspetto che funzionino entrambi, ma non lo fanno.
versione funzionante ...
tabl = "Action"
query = "SHOW FULL COLUMNS FROM `Action`;"
println " "+ query
dbConnection.eachRow(query){
In variante di errore:
tabl = "Action"
query = "SHOW FULL COLUMNS FROM `${tabl}`;"
println " "+ query
dbConnection.eachRow(query){
L'errore ritorna come un errore di sintassi SQL. Come puoi vedere le dichiarazioni sono testualmente identiche.
L'uscita mostrano la dichiarazione, poi un errore:
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
penso che è solo Groovy cercando di cercare un colpevole. Quando inserisco la stringa letterale nella connessione JDBC funziona perfettamente per la tabella 'Action'.
Spero che qualcuno possa spiegare l'errore e offrire una soluzione.
per chi legge, ho trovato questa opzione come una soluzione :
query = "SHOW FULL COLUMNS FROM `"+ tabl.toString() +"`;"
Mentre ci potrebbe essere un'opzione meno prolissa, l'utilizzo di "+"; a me sembra che usare $ {tabl} dovrebbe funzionare.
Grazie in anticipo,
Hai provato a usare ' 'colonne completi MOSTRA DA $ {} tabl;'' (notare l'apostrofo invece di doppie virgolette)? – dmahapatro
possibile duplicato di [impostare dinamicamente il db in una query SQL] (http://stackoverflow.com/questions/2267756/dynamically-set-the-db-in-a-sql-query) –