2010-02-09 98 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

相关问题