SQL Server 2005 Expressに接続してみるテスト(その3)

rubyからSQL Server 2005 Express接続 キター━━━━(゚∀゚)━━━━ッ!!

require 'win32ole'

def startADO database
  cn = WIN32OLE.new("ADODB.Connection")
  connstr = "Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=#{database};Data Source=(local)"
  cn.Open connstr
  begin 
    yield cn
  ensure
    cn.Close
  end
end

module Recordset
  def [] field
    self.Fields.Item(field).Value
  end

  def []= field,value
    self.Fields.Item(field).Value = value
  end
  
  def each_record
    if self.EOF or self.BOF
      return 
    end
    self.MoveFirst
    until self.EOF or self.BOF
      yield self
      self.MoveNext
    end
  end
end

startADO("log4net") do |cn|
  sql = "SELECT * FROM tblLogs;"
  rs = cn.Execute(sql)
  rs.extend Recordset
  fields = ["Date","Thread","Level","Logger", "Message"]
  rs.each_record do |rs|
    values = fields.map do |field|
      rs[field]
    end
    puts values.join(",")
  end
end
$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
$ ruby ole.rb
2008/02/28 20:03:45,1,INFO,log4net_write.Program,Program Start
2008/02/28 20:03:45,1,DEBUG,log4net_write.Program,log4net_write test
2008/02/28 20:03:45,1,FATAL,log4net_write.Program,Program Stop