Como se converte de um conjunto de resultados Java em consulta ColdFusion em Railo?
-
19-09-2019 - |
Pergunta
O seguinte funciona bem no CFMX 7 e CF8, e eu assumiria o CF9 também:
<!--- '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() />
Isso cria uma declaração usando um driver JDBC, executa uma consulta contra ele, colocando -a em um Java ResultSet, e depois ColdFusion.SQL.QueryTable é instanciado, passou pelo objeto Java Resulset e, em seguida, querido.Firsttable () é chamado de que devoluções um conjunto de resultados defusão fria (para cfloop e similares).
O problema vem com uma diferença na implementação de Railo. A execução deste código em Railo retorna o seguinte erro: Nenhum construtor correspondente para ColdFusion.SQL.QueryTable (org.sqlite.rs) encontrado.
Eu larguei o objeto Railo Java e não vejo init () entre os métodos. Estou perdendo algo simples? Eu adoraria fazer isso funcionar em Railo também.
Observação: estou fazendo uma conexão sem DSN com um sqlite db. Eu entendo como configurar um conjunto de dados CF. Meu único soluço neste momento é fazer a tradução de um conjunto de resultados Java em uma consulta Railo.
Solução
Olhando para o código -fonte de Railo, vejo isso railo.runtime.type.QueryImpl
pode atender às suas necessidades. Implementa railo.runtime.type.Query
e aceita um conjunto de resultados em seu construtor, mas não parece implementar QueryTable
.
Se essa for a classe certa, você deseja passar em um ResultSet e uma string para o nome da consulta, pois ele não possui um construtor que apenas requer um conjunto de resultados.