Использование Ruby DBI для подготовки без ручки? - PullRequest
2 голосов
/ 16 марта 2010

Мне нужно использовать Ruby для создания некоторых операторов SQL для базы данных MySQL. Ruby никогда не подключится к базе данных. Операторы SQL будут отправлены на другой сайт и выполнены для базы данных MySQL.

Поскольку машина, на которой работает Ruby, не имеет соединения с базой данных, возможно ли использовать оператор prepare DBI без создания дескриптора базы данных MySQL?

1 Ответ

2 голосов
/ 18 марта 2010

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"

Вы можете увидеть алгоритм, который он использует здесь .

Редактировать: на основе комментариев ниже 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'"

Соответствующий исходный файл здесь .

...