2010-02-09 51 views
8

以下作品CFMX 7和CF8罰款,我會承擔CF9還有:如何將Java結果集轉換爲Railo中的ColdFusion查詢?

<!--- '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實例化,傳遞Java resulset對象,然後調用queryTable.FirstTable(),它將返回實際的Coldfusion結果集(用於cfloop等)。

問題出現在Railo的實施中。在Railo中運行此代碼將返回以下錯誤:找不到匹配的Coldfusion.sql.QueryTable(org.sqlite.RS)的構造函數。

我拋棄了Railo java對象,並且在方法中看不到init()。我錯過了一些簡單的東西嗎我很樂意在Railo中工作。

請注意:我正在做一個SQLite數據庫的無DSN連接。我瞭解如何設置CF數據源。我唯一的問題就是從Java結果集轉換爲Railo查詢。

+0

這可能是一個愚蠢的問題 - 但爲什麼不使用常規ColdFusion數據源和''來創建查詢結果? – Tomalak 2010-02-09 12:58:19

+0

請參閱:http://www.coldfusionjedi.com/index.cfm/2009/9/24/Hooking-up-ColdFusion-and-SQLite – Tomalak 2010-02-09 13:06:59

+0

這可能是因爲QueryTable是Railo中的一個接口。所以你不能實例化它。 (這是Adobe CF中的具體類)。我不確定Railo用於查詢的具體類,還是與Adobe CF中的QueryTable類似。但是,如前所述,是否有一個原因,您不能使用常規查詢? – Leigh 2010-02-09 15:19:33

回答

5

看着Railo的源代碼,我發現railo.runtime.type.QueryImpl可能適合您的需求。它實現了railo.runtime.type.Query並在其構造函數中接受了一個ResultSet,但它似乎沒有實現QueryTable

如果這是正確的類,則需要傳入ResultSet和查詢名稱的字符串,因爲它沒有隻帶有ResultSet的構造函數。

+0

這樣做。爲Railo所得CFML是: \t \t \t \t \t 2010-02-09 21:01:50

+3

這就是開源的美麗。我查看了Railo源代碼,以瞭解它們如何使用cfdocument標籤生成PDF(事實證明,Railo使用pdf4ml)。 – 2010-02-10 19:53:20

相關問題