2010-02-09 38 views
8

Các công việc sau tốt trong CFMX 7 và CF8, và tôi muốn giả CF9 cũng như:Làm cách nào để chuyển đổi từ kết quả Java sang truy vấn ColdFusion trong Railo?

<!--- '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() /> 

Điều này tạo ra một tuyên bố bằng cách sử dụng trình điều khiển JDBC, thực hiện một truy vấn chống lại nó, đưa nó vào một resultset java, và sau đó coldfusion.sql.QueryTable được khởi tạo, thông qua đối tượng resulset Java, và sau đó queryTable.FirstTable() được gọi, trả về một kết quả coldfusion thực tế (cho cfloop và tương tự).

Sự cố xảy ra với sự khác biệt trong triển khai của Railo. Chạy mã này trong Railo trả về lỗi sau: Không tìm thấy Constructor phù hợp cho coldfusion.sql.QueryTable (org.sqlite.RS).

Tôi đã bỏ đối tượng Railo java và không thấy init() trong số các phương thức. Tôi thiếu một cái gì đó đơn giản? Tôi cũng muốn làm việc này ở Railo.

Xin lưu ý: Tôi đang thực hiện kết nối DSN-less với db SQLite. Tôi hiểu cách thiết lập nguồn dữ liệu CF. Nấc cụt duy nhất của tôi vào thời điểm này là thực hiện việc dịch từ một kết quả Java được đặt thành một truy vấn Railo.

+0

Đây có thể là câu hỏi ngớ ngẩn - nhưng tại sao bạn không sử dụng nguồn dữ liệu Coldfusion thông thường và '' để tạo kết quả truy vấn? – Tomalak

+0

Xem: http://www.coldfusionjedi.com/index.cfm/2009/9/24/Hooking-up-ColdFusion-and-SQLite – Tomalak

+0

Đó có lẽ là do QueryTable là một giao diện trong Railo. Vì vậy, bạn không thể khởi tạo nó. (Đây là một lớp cụ thể trong Adobe CF). Tôi không chắc chắn những gì lớp bê tông Railo sử dụng cho các truy vấn, hoặc nếu nó tương tự như QueryTable trong Adobe CF. Nhưng, như đã đề cập, có một lý do bạn không thể sử dụng truy vấn thông thường không? – Leigh

Trả lời

5

Nhìn vào mã nguồn của Railo, tôi thấy rằng railo.runtime.type.QueryImpl có thể phù hợp với nhu cầu của bạn. Nó thực hiện railo.runtime.type.Query và chấp nhận một ResultSet trong hàm tạo của nó, nhưng nó dường như không thực hiện QueryTable.

Nếu đó là lớp phù hợp, bạn sẽ muốn chuyển vào một ResultSet và một chuỗi cho tên truy vấn, vì nó không có một hàm tạo chỉ lấy một ResultSet.

+0

Điều đó đã xảy ra. Các CFML kết quả cho Railo là: \t \t \t \t \t

+3

Thats vẻ đẹp của nguồn mở. Tôi đã xem mã nguồn của Railo để xem cách chúng tạo ra các tệp PDF bằng cách sử dụng thẻ cfdocument (hóa ra là Railo sử dụng pdf4ml). –

Các vấn đề liên quan