2010-02-09 13 views
8

Los siguientes trabajos finos en CFMX 7 y CF8, y Me asumir CF9 así:¿Cómo se convierte desde un conjunto de resultados Java a una consulta ColdFusion en 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() /> 

Esto crea una declaración usando un driver JDBC, ejecuta una consulta en contra de ella, poniéndola en un conjunto de resultados de Java, y luego se crea una instancia de coldfusion.sql.QueryTable, pasa el objeto resultante de Java y se invoca queryTable.FirstTable(), que devuelve un conjunto de resultados de ColdFusion real (para cfloop y similares).

El problema viene con una diferencia en la implementación de Railo. La ejecución de este código en Railo arroja el siguiente error: No se encontró el Constructor correspondiente para coldfusion.sql.QueryTable (org.sqlite.RS).

He abandonado el objeto Railo java y no veo init() entre los métodos. ¿Me estoy perdiendo algo simple? Me encantaría que esto funcione en Railo también.

Tenga en cuenta: Estoy haciendo una conexión sin DSN a una base de datos SQLite. Entiendo cómo configurar un origen de datos de CF. Mi único inconveniente en este punto es hacer la traducción de un conjunto de resultados de Java a una consulta de Railo.

+0

Esto puede ser una pregunta tonta, pero ¿por qué no utiliza una fuente de datos común de ColdFusion y '' para crear un resultado de consulta? – Tomalak

+0

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

+0

Eso es probablemente porque QueryTable es una interfaz en Railo. Entonces no puedes instanciarlo. (Es una clase concreta en Adobe CF). No estoy seguro de qué clase concreta utiliza Railo para las consultas, o si es similar a QueryTable en Adobe CF. Pero, como se mencionó, ¿hay una razón por la que no puede usar una consulta regular? – Leigh

Respuesta

5

Al observar el código fuente de Railo, veo que railo.runtime.type.QueryImpl podría satisfacer sus necesidades. Implementa railo.runtime.type.Query y acepta un ResultSet en su constructor, pero no parece implementar QueryTable.

Si esa es la clase correcta, tendrá que pasar en un conjunto de resultados y una cadena para el nombre de la consulta, ya que no tiene un constructor que sólo se necesita un conjunto de resultados.

+0

Eso lo hizo. El CFML resultante para Railo es: \t \t \t \t \t

+3

Esa es la belleza del código abierto. He revisado el código fuente de Railo para ver también cómo generan archivos PDF usando la etiqueta cfdocument (resulta que Railo usa pdf4ml). –

Cuestiones relacionadas