我需要使用Ruby为MySQL数据库创建一些SQL语句。 Ruby永远不会连接到数据库。 SQL语句将被发送到另一个站点并针对MySQL数据库执行。
由于运行Ruby的机器没有与数据库的连接,是否可以使用DBI的prepare语句而无需创建MySQL数据库的句柄?
答案 0 :(得分:2)
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。
编辑:基于以下评论a,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。