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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top