どのようにしてRailoでColdFusionクエリーへのJava結果セットから変換するのですか?
-
19-09-2019 - |
質問
以下は、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などのために)実際のColdFusion結果セットを返す。
問題がRailoの実装の違いが付属しています。 Railoでこのコードを実行すると、次のエラーを返します。coldfusion.sql.QueryTable(org.sqlite.RS)に該当するコンストラクタ見出さを
私はRailoのJavaオブジェクトをダンプしてきた、と方法のうちのinit()が表示されません。私は、単純な何かが足りないのですか?私もRailoでこの作業を取得してみたい。
ご注意:私はSQLiteのDBにDSNレス接続をしています。私はCFのデータソースを設定する方法を理解しています。この時点で私の唯一のしゃっくりがRailoクエリに設定されたJava結果からの翻訳を行っています。
解決
Railoのソースコードを見ると、私はrailo.runtime.type.QueryImpl
があなたのニーズに合うかもしれないことがわかります。それはrailo.runtime.type.Query
を実装し、そのコンストラクタでResultSetを受け付けますが、QueryTable
を実装していないようです。
、あなたはそれが唯一のResultSetを取るコンストラクタを持っていないとして、クエリー名のためのResultSetと文字列を渡したいと思うでしょう。