Wie konvertiert man von einem Java -Ergebnis in Coldfusion -Abfrage in Railo?
-
19-09-2019 - |
Frage
Die folgenden Funktionen funktionieren in CFMX 7 und CF8 einwandfrei, und ich würde auch CF9 annehmen:
<!--- '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() />
Dies erstellt eine Anweisung mit einem JDBC -Treiber, führt eine Abfrage dagegen aus, die sie in ein Java -Ergebnis setzt und dann Coldfusion.sql.querytable instanziiert, das Java Resulset -Objekt übergeben und dann abfragen Ein tatsächliches Coldfusion -Ergebnis (für CFLOOP und dergleichen).
Das Problem hat einen Unterschied in der Implementierung von Railos. Ausführen dieses Code in Railo gibt den folgenden Fehler zurück: Kein übereinstimmender Konstruktor für ColdFusion.sql.querytable (org.sqlite.rs) gefunden.
Ich habe das Railo Java -Objekt abgeladen und sehe init () unter den Methoden nicht. Vermisse ich etwas Einfaches? Ich würde es gerne auch in Railo zum Arbeiten bringen.
Bitte beachten Sie: Ich mache eine dsnlose Verbindung zu einer SQLite-DB. Ich verstehe, wie man eine CF -Datenquelle einrichtet. Mein einziger Schluckauf zu diesem Zeitpunkt besteht darin, die Übersetzung von einem Java -Ergebnis auf eine Railo -Abfrage durchzuführen.
Lösung
Wenn ich den Railo -Quellcode betrachte, sehe ich das railo.runtime.type.QueryImpl
könnte zu Ihren Bedürfnissen passen. Es implementiert railo.runtime.type.Query
und akzeptiert ein Ergebnis in seinem Konstruktor, scheint aber nicht implementiert zu sein QueryTable
.
Wenn dies die richtige Klasse ist, möchten Sie ein Ergebnis und eine Zeichenfolge für den Abfragennamen übergeben, da er keinen Konstruktor hat, der nur ein Ergebnis einnimmt.