8

以下在 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(),它返回一个实际的冷融合结果集(用于 cfloop 等)。

问题在于Railo 的实现方式有所不同。在 Railo 中运行此代码会返回以下错误:找不到 Coldfusion.sql.QueryTable(org.sqlite.RS) 的匹配构造函数。

我已经转储了 Railo java 对象,并且在方法中看不到 init() 。我错过了一些简单的东西吗?我也很想在 Railo 中使用它。

请注意:我正在与 SQLite 数据库进行无 DSN 连接。我了解如何设置 CF 数据源。在这一点上,我唯一的问题是将 Java 结果集转换为 Railo 查询。

4

1 回答 1

5

查看 Railo 源代码,我认为这railo.runtime.type.QueryImpl可能符合您的需求。它在其构造函数中实现railo.runtime.type.Query并接受一个 ResultSet,但它似乎没有实现QueryTable.

如果这是正确的类,您将需要传入一个 ResultSet 和一个用于查询名称的字符串,因为它没有只接受 ResultSet 的构造函数。

于 2010-02-09T20:31:48.957 回答