ruby和accdb(ms访问)

如果我有一个基本的Windows XP系统,ruby和一个ms access 2007文件(例如c:/foo/bar.accdb)文件,那么读取.accdb文件的最少侵入性方法是什么。

  • 需要在xp系统上安装什么。
  • 什么是特定的连接字符串。

沿着这些方向的东西应该让你开始。 当然,你需要修改一些值,比如; 路径,文件名,SQL语句等

使用Jet引擎的MDB文件(Access 2003格式和更旧版本)

require 'win32ole' connection = WIN32OLE.new('ADODB.Connection') connection.Open('Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\path\filename.mdb') 

使用ACE引擎的ACCDB文件(Access 2007格式和更新版本)

 require 'win32ole' connection = WIN32OLE.new('ADODB.Connection') connection.Open('Provider=Microsoft.ACE.OLEDB.12.0; Data Source=c:\path\filename.accdb') 

要执行不返回数据的SQL查询,请使用:

 connection.Execute("INSERT INTO Table VALUES ('Data1', 'Data2');") 

要执行返回记录集的查询:

 recordset = WIN32OLE.new('ADODB.Recordset') recordset.Open(SQLstatement, connection) 

你可以使用Ruby库Sequel( http://sequel.rubyforge.org/documentation.html ),它有ADO适配器

您可以通过Ruby的win32ole库使用ADO。

完整的详细信息和代码可以在这里找到。

如果您可以使用ADO,那么您将发现已在Windows XP盒上安装ADO库(否则分发MDAC)。 然后您需要的是ACE dll及其OLE DB提供程序,可从Microsoft下载中心免费获得:

2007 Office System驱动程序:数据连接组件

正如这篇博客文章所解释的那样( Ruby on Windows:使用Ruby和ADO来处理MS Access数据库 ,您可以使用ADO连接到MS Access 2007数据库。

如果即使在添加2007 Office system驱动程序后Sequel和ADO也不起作用:检查您是运行32位还是64位版本的Ruby。 我不得不将我的版本降低到32位以使事情正常工作。