Как обратиться из Java ResultSet в ColdFusion запрос на Railo?
-
19-09-2019 - |
Вопрос
Следующее работает нормально в CFMX 7 и CF8, и я также предполагаю CF9:
<!--- '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() />
Это создает заявление с использованием драйвера JDBC, выполняет запрос против него, вкладывая его в Java ResultSet, а затем ColdFusion.sql.QueryTable создается, прошел объект Java Resulset, а затем QueryTable.firsttable (), который возвращает Фактический результат холодногофузия (для Cfloop и тому подобного).
Проблема возникает с разницей в реализации Railo. Запуск этого кода в Railo возвращает следующую ошибку: не найдено соответствующий конструктор для coldfusion.sql.querytable (org.sqlite.rs).
Я бросил объект Railo Java и не вижу init () среди методов. Я упускаю что -то простое? Я бы хотел, чтобы это работало и в Railo.
Обратите внимание: я делаю соединение без DSN с SQLite DB. Я понимаю, как настроить данные CF. Моя единственная сбоя на этом этапе - это перевод с результата Java, установленного на запрос Railo.
Решение
Глядя на исходный код Railo, я вижу это railo.runtime.type.QueryImpl
может соответствовать вашим потребностям. Это реализует railo.runtime.type.Query
и принимает результат в своем конструкторе, но, похоже, он не реализует QueryTable
.
Если это правильный класс, вы захотите пройти в результате результатов и строку для имени запроса, так как у него нет конструктора, который требует только результатов.