I connected to an mdb (access db) in windows with the 'win32ole' gem.  I 
also got this class from a blog post by David Mullet:
http://rubyonwindows.blogspot.com/2007/06/using-ruby-ado-to-work-with-ms-access.html

which also has a guide on how to connect.

I modified the class on this page to return results as an array of 
hashes, like ActiveRecord's find_rows method, and added a "find" method 
which just takes an sql string.  So, it's pretty like mysql (my desire 
as well, i was amazed to discover that access has no sql command line).

If this has problems then blame me and not David :)  Here's my complete 
class, see the blog post by David above on how to use it.

class AccessDb

  attr_accessor :mdb, :connection, :data, :fields, :rows, :sql



  def initialize(mdb=nil)

    @mdb = mdb

    @connection = nil

    @data = nil

    @fields = nil

    @rows = []

    self.open

  end



  def open

    connection_string =  'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='

    connection_string << @mdb

    @connection = WIN32OLE.new('ADODB.Connection')

    @connection.Open(connection_string)

  end



  def query(sql, options = {})

    self.sql = sql

    puts "Querying: #{sql}" if options[:verbose]

    recordset = WIN32OLE.new('ADODB.Recordset')

    recordset.Open(sql, @connection)

    @fields = []

    @rows = []

    recordset.Fields.each do |field|

      @fields << field.Name

    end

    begin

      @data = recordset.GetRows.transpose

      @data.each do |row|

        row_hash = {}

        row.each_with_index do |value, i|

          row_hash[@fields[i]] = value

        end

        @rows << row_hash

      end

    rescue

      @data = []

    end

    recordset.Close

  end



  def find(sql, options = {})

    self.sql = sql

    self.query(sql, options)

    self.rows

  end



  def execute(sql, options = {})

    self.sql = sql

    puts "Executing: #{sql}" if options[:verbose]

    begin

      @connection.Execute(sql)

    rescue

      raise "!!ERROR executing \n#{sql}\n: (#{@mdb.inspect}) #{$!}"

    end

  end



  def close

    @connection.Close

  end

end
-- 
Posted via http://www.ruby-forum.com/.