Comment peut-on convertir d'un Java ResultSet requête ColdFusion dans Railo?
-
19-09-2019 - |
Question
Ce qui suit fonctionne très bien dans CFMX 7 et CF8, et je suppose CF9 ainsi:
<!--- '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() />
Cela crée une instruction à l'aide d'un pilote JDBC, exécute une requête contre elle, le mettre dans un jeu de résultats Java, puis coldfusion.sql.QueryTable est instancié, passé l'objet Java resulset, puis queryTable.FirstTable () est appelée , qui renvoie un coldfusion réel de résultats (pour cfloop et analogues).
Le problème vient avec une différence dans la mise en œuvre de Railo. L'exécution de ce code Railo renvoie l'erreur suivante:. Aucun constructeur correspondant pour coldfusion.sql.QueryTable (org.sqlite.RS) trouvé
Je l'ai largué l'objet java Railo, et ne voient pas init () parmi les méthodes. Suis-je manque quelque chose de simple? J'aimerais obtenir ce travail dans Railo ainsi.
S'il vous plaît noter: Je fais une connexion sans DSN à un SQLite db. Je comprends comment mettre en place une source de données des FC. Mon seul hic à ce moment fait la traduction d'un résultat Java mis à une requête Railo.
La solution
En regardant le code source Railo, je vois que railo.runtime.type.QueryImpl
pourrait répondre à vos besoins. Elle met en œuvre railo.runtime.type.Query
et accepte un ResultSet dans son constructeur, mais il ne semble pas mettre en œuvre QueryTable
.
Si c'est la bonne classe, vous aurez envie de passer dans un ResultSet et une chaîne pour le nom de la requête, car il ne dispose pas d'un constructeur qui ne prend que ResultSet.