使用Ruby DBI准备没有句柄?

时间:2010-03-16 17:54:30

标签: ruby dbi

我需要使用Ruby为MySQL数据库创建一些SQL语句。 Ruby永远不会连接到数据库。 SQL语句将被发送到另一个站点并针对MySQL数据库执行。

由于运行Ruby的机器没有与数据库的连接,是否可以使用DBI的prepare语句而无需创建MySQL数据库的句柄?

1 个答案:

答案 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