代码之家  ›  专栏  ›  技术社区  ›  James A. Rosen

有关于让Rails在访问后端运行的提示吗?

  •  5
  • James A. Rosen  · 技术社区  · 17 年前

    我不寒而栗地问,但我的客户机可能不会提供其他SQL(或类似SQL的)解决方案。我知道Access有一些SQL钩子;它们是否足够用于基本的ActiveRecord?

    后来:

    我很欣赏使用其他数据库的所有建议,但请相信我:我试过说服他们。有一个“已批准”的列表,上面没有SQL数据库。把一些东西列入清单可能需要一年多的时间,这个项目将在三周内完成。

    7 回复  |  直到 16 年前
        1
  •  3
  •   John Topley    17 年前

    这是一个远射,但有一个 ODBC adapter for ActiveRecord 那可能有效。

        2
  •  2
  •   James A. Rosen    17 年前

    这里似乎有某种访问连接适配器: http://svn.behindlogic.com/public/rails/activerecord/lib/active_record/connection_adapters/msaccess_adapter.rb

    database.yml文件如下所示:

    development:
      adapter: msaccess
      database: C:\path\to\access_file.mdb
    

    在试用Rails 2.1之后,我会发布更多内容。

        3
  •  1
  •   paxdiablo    17 年前

    另一个更复杂的选择是编写一个RESTful Web服务层,该层将公开对Rails的访问,但如果您被迫这样做,它可能会工作。如果您在设计时很小心,那么ActiveResoure可以直接使用这些RESTful Web服务,这将为您提供ActiveRecord的许多功能。

        4
  •  1
  •   wusher    17 年前

    在Access中有一些wierd东西可能会引起问题,我不知道ODBC是否会处理它。如果是这样,@john topley是对的,那么odbc将是您唯一的一把。

    1. 访问中为true=-1而不是1
    2. Access处理日期与常规TSQL不同。
    3. 你在建立关系时可能会遇到麻烦。

    如果您使用access,可能会了解更多有关AcrivereCord的信息,然后您会关心这些信息(这可能不是一件坏事)。

        5
  •  1
  •   GEOCHET S.Lott    16 年前

    莫迪特写道:

    访问中为true=-1而不是1

    不正确。真被定义为不假。因此,如果要在WHERE子句中使用TRUE,请改用NOT FALSE。这将提供与所有SQL引擎的完全跨平台兼容性。

    尽管如此,这几乎不是一个问题,因为无论您使用什么驱动程序连接到后端,都将正确地将where子句中的true转换为适当的值。唯一的例外可能是passthrough查询,但是在这种情况下,您应该编写SQL outside access并在后端对其进行测试,然后将工作的SQL粘贴到access中passthrough查询的SQL视图中。

    莫迪特写道:

    Access处理日期与常规TSQL不同。

    同样,只有当您不使用ODBC或OLEDB驱动程序时,这才是一个问题,这些驱动程序将负责将Jet SQL转换为TSQL。

    莫迪特写道:

    你在建立关系时可能会遇到麻烦。

    我不知道为什么您希望一个访问应用程序改变您后端的模式,所以在我看来这是一个没有问题的问题。

        6
  •  0
  •   ryw    17 年前

    你真的应该说服他们允许使用sqlite。它的设置非常简单,操作起来就像访问一样(作为一个文件放在同一台服务器上的应用程序旁边)。

        7
  •  0
  •   Orion Edwards    17 年前

    首先,你 真的? 希望使用sqlite。

    根据我的经验,Access本身就是一堆[编校的],但它使用的Jet数据库引擎实际上非常快,可以处理一些非常复杂的SQL查询。如果你能找到一个真正有效的Rails适配器,我会说你会没事的。当你的Rails应用程序运行时,不要用访问前端打开DB:-)

    如果你的客户仅仅允许你开发一个经过批准的数据库列表,他们可能会更加关注这样一个事实: Jet is deprectated 不会再得到微软的支持。

    这可能会给你一些弹药,在你寻求使用一个真正的数据库。祝你好运

    推荐文章