2010-02-09 9 views
8

I seguenti funziona bene in CFMX 7 e CF8, e mi piacerebbe pensare CF9 così:Come si converte da un set di risultati Java a una query ColdFusion in Railo?

<!--- '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 istanziato, passato l'oggetto resulset Java e quindi viene chiamato queryTable.FirstTable(), che restituisce un set di risultati coldfusion effettivo (per cfloop e simili).

Il problema si presenta con una differenza nell'implementazione di Railo. L'esecuzione di questo codice in Railo restituisce il seguente errore: Nessun costruttore Constructor corrispondente per coldfusion.sql.QueryTable (org.sqlite.RS) trovato.

Ho scaricato l'oggetto java Railo e non vedo init() tra i metodi. Mi sto perdendo qualcosa di semplice? Mi piacerebbe farlo funzionare anche a Railo.

Nota: sto eseguendo una connessione DSN-less a un db SQLite. Capisco come impostare un datasource CF. Il mio unico problema a questo punto sta facendo la traduzione da un set di risultati Java a una query Rail.

+0

Questa potrebbe essere una domanda stupida - ma perché non si utilizza un'origine dati ColdFusion normale e '' per creare un risultato di query? – Tomalak

+0

Vedere: http://www.coldfusionjedi.com/index.cfm/2009/9/24/Hooking-up-ColdFusion-and-SQLite – Tomalak

+0

Ciò è probabilmente dovuto al fatto che QueryTable è un'interfaccia in Railo. Quindi non puoi istanziarlo. (È una classe concreta in Adobe CF). Non sono sicuro della classe di Railo utilizzata per le query o se è simile a QueryTable in Adobe CF. Ma, come detto, c'è un motivo per cui non puoi usare una query regolare? – Leigh

risposta

5

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 implementare QueryTable.

Se questa è la classe giusta, è necessario passare un ResultSet e una stringa per il nome della query, poiché non dispone di un costruttore che accetta solo un ResultSet.

+0

Questo l'ha fatto. Il CFML risultante per Railo è: \t \t \t \t \t

+3

Questa è la bellezza dell'open source. Ho guardato il codice sorgente Railo per vedere anche come generano PDF usando il tag cfdocument (si scopre che Railo usa pdf4ml). –

Problemi correlati