Sto cercando di ottenere ParameterMetaData da un oggetto java.sql.PreparedStatement.PreparedStatement.getParameterMetaData() genera ArrayIndexOutOfBoundsException quando si dispone di commenti e parametri all'interno di sql-string
Mentre la documentazione dice che il lancio di un SQLException quando qualcosa va storto sul database, attualmente sto ricevendo un ArrayIndexOutOfBoundsException.
Sto usando questo URL driver JDBC: oracle.jdbc.driver.OracleDriver Ho un ojdbc6.jar e una a 64 bit JDK 1.6.0.45 in uso.
sto facendo quanto segue:
PreparedStatement stmt = myOracleConn.prepareStatement(sql);
preparedStatements.add(stmt);
ParameterMetaData bla2 = stmt.getParameterMetaData(); //this Line throws the Exception
ho scoperto che questo accade solo, quando uso un commento all'interno del sql-String.
Così, quando il mio SQL è:
1) (nessun commento, ma parametro)
"SELECT * FROM DUAL WHERE 1 = ?" --> no error occurs
2) (commento e parametri)
"/* mySampleComment */ SELECT * FROM DUAL WHERE 1 = ?" --> the indexoutofbounds exception occurs
3) (commento, ma non parametro)
"/* mySampleComment */ SELECT * FROM DUAL WHERE 1 = 1" --> no error occurs
I wonde r se è così e non devo usare commenti all'interno dei miei sql o se mi manca qualcosa ... Qualcuno sa qualcosa su questo?
edit1: L'utilizzo di --comments invece di/**/restituisce lo stesso comportamento. EDIT2: sembra non a tutti, ho un grande SQL che ha incluso
\n\t\t\t\t--great
che ottiene l'eccezione. Quando si inserisce questo sopra del campione sqls ancora, funzionerà
Se mi mancano alcune informazioni, basta richiederlo. Grazie in anticipo.
Sembra che hai appena trovato un bug nel driver JDBC Oracle. D'altra parte, non penso che i driver JBDC siano pronti a ricevere commenti Java all'interno della query ... – ericbn
SQL standard non supporta quel tipo di commenti. Solitamente supporta solo commenti a una riga che iniziano con '--' (e, ovviamente, non è possibile inserirli all'inizio della riga). Ma perché dovresti inserire commenti nelle stringhe SQL piuttosto che nel programma che li esegue? – RealSkeptic
e che dire dell'uso dei suggerimenti? sono codificati come commenti, anche modifica: io uso i commenti in sql perché sql è immesso da extern e i commenti descrivono le sql non le routine java – Kaspatoo