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