たむら です。
Mon, 23 Aug 1999 12:37:15 +0900 の
[ruby-list:16261] Re: ruby から MS SQL Server へのアクセス
に関するメールのリプライです。
20分くらいで、書きましたので信用しないでください。
ADO とは、MSの提唱する Data へのアクセス手法です。
RDBMS だけでなく、OLAP や メールシステムなどに透過的に接続するもの
だそうです。
# そうは言っても MS だし
Windowsの世界では、%w(ODBC DAO RDO) などから、%w(ADO) の移行を勧めて
いますが、性能や様々な問題より、まだ主流とは言えないものの無視できない
存在といったところ。
ruby-cygwin /w win32ole な環境からなら、ODBC or OLE DB があれば
どんな DB とも接続できるはずです。テストは、SQL Server6.5 の pubs を
ODBC 経由にて接続してます。
=== ここから
module ParseSql
def rs? sql
sql.scan(/^\s*SELECT /i).size != 0
end
end
class ADOconn
include ParseSql
def initialize(str)
require 'win32ole'
@ado = WIN32OLE.new('ADODB.Connection')
@ado.Open str
end
def close
@ado.Close
end
def query(sql)
if rs?(sql)
rs = @ado.Execute(sql)
unless rs.nil?
result = []
until rs.EOF
l = []
for r in rs.Fields
l << r.Value
end
result << l
rs.MoveNext
end
rs.Close
end
return result
else
@ado.Execute(sql)
end
end
end
if __FILE__ == $0
conn =ADOconn.new( "Driver={SQL Server};Server=srv;Uid=sa;Pwd=;Database=pubs")
conn.query("SELECT * FROM titles").each do |r|
puts r.join("\,")
end
conn.close
end
=== ここまで
--------------------------------------------------
トランス・コスモス株式会社 福岡支社システム課
田村 賢一
tamura / fko.trans-cosmos.co.jp
t9655832 / aar.trans-cosmos.co.jp
** 祝 ruby-1.4.0 リリース **
--------------------------------------------------