【问题标题】:ruby and accdb (ms access)ruby 和 accdb (ms 访问)
【发布时间】:2010-11-10 08:25:55
【问题描述】:

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

  • xp系统需要安装什么。
  • 具体的连接字符串是什么。

【问题讨论】:

    标签: ruby ms-access windows-xp


    【解决方案1】:

    这些方面的内容应该可以帮助您入门。当然,您需要修改一些值,例如;路径、文件名、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)
    

    【讨论】:

    • 我需要使用:Provider=Microsoft.ACE.OLEDB.12.0
    • 是的,它使用新版本的 Access 数据库引擎 ACE,而不是旧的 Jet 引擎。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      完整的细节和代码可以在here找到。

      【讨论】:

        【解决方案4】:

        如果您可以使用 ADO,那么您会发现 ADO 库已经安装在 Windows XP 机器上(否则分发 MDAC)。那么您所需要的只是 ACE dll 及其 OLE DB Provider,可从 Microsoft 下载中心免费获得:

        2007 Office System Driver: Data Connectivity Components

        【讨论】:

          【解决方案5】:

          正如这篇博文所解释的那样(Ruby on Windows: Using Ruby & ADO to Work with MS Access Databases,您可以使用 ADO 连接到 MS Access 2007 数据库。

          【讨论】:

            【解决方案6】:

            如果在添加 2007 Office 系统驱动程序后 Sequel 和 ADO 仍无法工作:请检查您运行的是 32 位还是 64 位版本的 Ruby。我必须将我的版本降低到 32 位才能正常工作。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-10-14
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多