كيف يحول المرء من نتائج جافا إلى استعلام ColdFusion في Railo؟
-
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، ثم BallFusion.sql.Querytable قد مثيل، مرت كائن إعادة إصدار Java، ثم يتم استدعاء Querytable.firsttable ()، والذي يعود نتائج coldfusion الفعلية (ل cfloop وما شابه ذلك).
تأتي المشكلة مع اختلاف في تنفيذ Railo. يؤدي تشغيل هذا الرمز في Railo إلى إرجاع الخطأ التالي: لا يوجد منشئ مطابق ل ColdFusion.sql.querytable (Org.sqlite.rs).
لقد ألقيت كائن Railo Java، ولا أرى INIT () من بين الأساليب. هل أفتقد شيئا بسيطا؟ أحب الحصول على هذا العمل في Railo كذلك.
يرجى ملاحظة: أنا أقوم باتصال DSN أقل ب SQLite DB. أنا أفهم كيفية إعداد مصدر بيانات CF. يقوم HICCUP الوحيد في هذه المرحلة بالترجمة من نموذج نتائج Java إلى استعلام Railo.
المحلول
النظر إلى شفرة المصدر railo، أرى ذلك railo.runtime.type.QueryImpl
قد تناسب احتياجاتك. انها تنفذ railo.runtime.type.Query
ويقبل النتائج في منشئها، لكن لا يبدو أنه ينفذ QueryTable
.
إذا كانت هذه هي الفئة المناسبة، سترغب في تمرير نتائج وسلسلة لاسم الاستعلام، لأنها لا تحتوي على منشئ يأخذ نتائج فقط.