如果我有一个基本的windows xp系统,ruby和一个ms access 2007文件(例如c:/foo/bar.accdb)文件,那么读取.accdb文件的侵入性最小的方法是什么。
答案 0 :(得分:10)
这些方面的东西应该让你开始。当然,你需要修改一些值,比如;路径,文件名,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)
答案 1 :(得分:6)
你可以使用Ruby库Sequel(http://sequel.rubyforge.org/documentation.html),它有ADO适配器
答案 2 :(得分:3)
您可以通过Ruby的 win32ole 库使用ADO。
可以找到完整的详细信息和代码here。
答案 3 :(得分:1)
如果您可以使用ADO,那么您会发现已经在Windows XP盒上安装了ADO库(否则分发MDAC)。然后,您需要的只是ACE dll及其OLE DB提供程序,可从Microsoft下载中心免费获得:
答案 4 :(得分:1)
正如此博客文章所解释的那样(Ruby on Windows: Using Ruby & ADO to Work with MS Access Databases,您可以使用ADO连接到MS Access 2007数据库。
答案 5 :(得分:0)
如果Sequel和ADO在添加2007 Office system驱动程序后仍无法运行:请检查您是运行32位还是运行64位版本的Ruby。我不得不将我的版本降低到32位以使事情正常工作。