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() が呼び出され、戻り値が返されます。実際の coldfusion 結果セット (cfloop など)。

この問題は、Railo の実装の違いによって発生します。このコードを Railo で実行すると、次のエラーが返されます。coldfusion.sql.QueryTable(org.sqlite.RS) の一致するコンストラクターが見つかりません。

Railo Java オブジェクトをダンプしましたが、メソッドの中に init() がありません。簡単なものがありませんか?これをRailoでも機能させたいと思っています。

注意: SQLite db への 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 に答える