以下内容在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结果集中,然后实例化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查询。
最佳答案
查看Railo源代码,我发现railo.runtime.type.QueryImpl
可能符合您的需求。它实现了railo.runtime.type.Query
并在其构造函数中接受ResultSet,但似乎没有实现QueryTable
。
如果那是正确的类,则您将要传递ResultSet和查询名称的字符串,因为它没有仅采用ResultSet的构造函数。
关于java - 如何在Railo中将Java结果集转换为ColdFusion查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2227134/