2010-02-09 3 views
8

следующего штрафа в CFMX 7 и CF8 работа, и я бы предположить CF9, а также:Как конвертировать из набора данных Java в запрос ColdFusion в 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() /> 

Это создает заявление, используя драйвер JDBC, выполняет запрос к ней, поместив его в Java результирующего, а затем coldfusion.sql.QueryTable создается, передается объект resulset Java, а затем вызывается запросTable.FirstTable(), который возвращает фактический набор результатов для coldfusion (для cfloop и т.п.).

Проблема связана с различием в реализации Railo. Запуск этого кода в Railo возвращает следующую ошибку: не найдено соответствующего конструктора для coldfusion.sql.QueryTable (org.sqlite.RS).

Я сбросил объект Java Railo и не вижу init() среди методов. Я что-то пропустил? Мне бы хотелось, чтобы это работало и в Railo.

Обратите внимание: я использую подключение DSN-less к SQLite db. Я понимаю, как настроить источник данных CF. Моя единственная икота в этот момент делает перевод из набора результатов Java в запрос Railo.

+0

Это может быть глупый вопрос - но почему бы вам не использовать обычный источник данных ColdFusion и '' для создания результата запроса? – Tomalak

+0

Смотрите: http://www.coldfusionjedi.com/index.cfm/2009/9/24/Hooking-up-ColdFusion-and-SQLite – Tomalak

+0

Возможно, это потому, что QueryTable является интерфейсом в Railo. Поэтому вы не можете создать экземпляр. (Это конкретный класс в Adobe CF). Я не уверен, какой конкретный класс Railo использует для запросов, или если он похож на QueryTable в Adobe CF. Но, как уже упоминалось, есть причина, по которой вы не можете использовать обычный запрос? – Leigh

ответ

5

Глядя на исходный код Railo, я вижу, что railo.runtime.type.QueryImpl может соответствовать вашим потребностям. Он реализует railo.runtime.type.Query и принимает ResultSet в своем конструкторе, но он, похоже, не реализует QueryTable.

Если это правильный класс, вам нужно передать ResultSet и строку для имени запроса, так как он не имеет конструктора, который принимает только ResultSet.

+0

Это сделало. Результате CFML для Railo является: \t \t \t \t \t

+3

Thats красота с открытым исходным кодом. Я посмотрел исходный код Railo, чтобы узнать, как они создают PDF-файлы, используя тег cfdocument (получается, что Railo использует pdf4ml). –