2
我需要使用Ruby來創建一個MySQL數據庫的SQL語句。 Ruby永遠不會連接到數據庫。 SQL語句將被髮送到另一個站點並針對MySQL數據庫執行。使用Ruby DBI準備沒有句柄?
由於運行Ruby沒有到數據庫連接的機器,是有可能使用DBI的,而無需創建一個句柄到MySQL數據庫的準備語句?
我需要使用Ruby來創建一個MySQL數據庫的SQL語句。 Ruby永遠不會連接到數據庫。 SQL語句將被髮送到另一個站點並針對MySQL數據庫執行。使用Ruby DBI準備沒有句柄?
由於運行Ruby沒有到數據庫連接的機器,是有可能使用DBI的,而無需創建一個句柄到MySQL數據庫的準備語句?
ruby-dbi
不包括準備語句時,DBD沒有提供它的仿真器。你可以使用它如下:
require 'dbi'
st = DBI::SQL::PreparedStatement.new(nil, "Select * from table where x = ?")
st.bind(['test']) # => "Select * from table where x = test"
你可以看到它使用的算法here。
編輯:根據下評論,DBI 0.2.2版本
require 'dbi'
class Quoter ; include DBI::SQL::BasicQuote ; end
st = DBI::SQL::PreparedStatement.new(Quoter.new, "Select * from table where x = ?")
st.bind(['test']) # => "Select * from table where x = 'test'"
相關的源文件爲here。
上面的代碼產生錯誤。似乎需要一個報價類。 - > NoMethodError:未定義方法'quote'爲零:NilClass from C:/Ruby/lib/ruby/site_ruby/1.8/dbi/sql.rb:198:in'bind' from C:/ Ruby/LIB /紅寶石/ site_ruby/1.8/DBI/sql.rb:197:在'每個 '選自C :/Ruby/lib/ruby/site_ruby/1.8/dbi/sql.rb:197:在'綁定' 從( IRB):15個 – sutch
工程等中的Ruby 1.9.1/DBI 0.4.3一個魅力。你有什麼版本的dbi/ruby?我們可能可以找到該版本的相應代碼。 – anshul
我使用Ruby 1.8.6/dbi 0.2.2。 – sutch