Come si fa a convertire da un gruppo di risultati Java per query di ColdFusion in Railo?
-
19-09-2019 - |
Domanda
Il seguente funziona bene in CFMX 7 e CF8, e mi piacerebbe pensare CF9 così:
<!--- 'conn' is a JDBC connection --->
<cfset stat = conn.createStatement() />
<cfset rs = stat.executeQuery(trim(arguments.sql)) />
<!--- convert this Java resultset to a CF query recordset --->
<cfset queryTable = CreateObject("java", "coldfusion.sql.QueryTable")>
<cfset queryTable.init(rs) >
<cfset query = queryTable.FirstTable() />
Questo genera una dichiarazione utilizzando un driver JDBC, esegue una query contro di esso, metterlo in un gruppo di risultati Java, e quindi coldfusion.sql.QueryTable viene creata un'istanza, passato l'oggetto resulset Java, e quindi queryTable.FirstTable () viene chiamato , che restituisce un gruppo di risultati ColdFusion reale (per cfloop e simili).
Il problema viene fornito con una differenza di implementazione di Railo. L'esecuzione di questo codice nella Railo restituisce il seguente errore:. Nessun costruttore di corrispondenza per coldfusion.sql.QueryTable (org.sqlite.RS) trovati
ho scaricato l'oggetto Java Railo, e non vedo init () tra i metodi. Mi sto perdendo qualcosa di semplice? Mi piacerebbe ottenere questo lavoro in Railo pure.
Si prega di notare: sto facendo una connessione senza DSN a un db SQLite. Capisco come impostare un DataSource CF. Il mio unico incidente di percorso a questo punto sta facendo la traduzione da un risultato Java insieme a una query Railo.
Soluzione
Guardando il codice sorgente Railo, vedo che railo.runtime.type.QueryImpl
potrebbe soddisfare le vostre esigenze. Implementa railo.runtime.type.Query
e accetta un ResultSet nel suo costruttore, ma non sembra per implementare QueryTable
.
Se questo è il classe giusta, ti consigliamo di passare in un ResultSet e una stringa per il nome della query, in quanto non dispone di un costruttore che richiede solo un ResultSet.