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位以使事情正常工作。