有关使用Access后端运行Rails的任何提示?

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

后来:

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

这是一个很长的镜头,但有一个适用于ActiveRecord的ODBC适配器 。

这里似乎有一些Access连接适配器: 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之后,我会发布更多内容

另一个更复杂的选项,但是如果你被迫这样做的话可以工作,那就是编写一层RESTful Web服务来公开Access to rails。 如果您在设计中小心,那么ActiveResoure可以直接使用这些RESTful Web服务,这将为您提供ActiveRecord的许多function。

Access中有一些奇怪的东西可能会导致问题,我不知道ODBC是否会处理它。 如果它确实@John Topley是对的,ODBC将是你唯一的癌症。

  1. 访问时为真= -1而不是1
  2. Access以不同于常规TSQL的方式处理日期。
  3. 你可能会遇到创建关系的麻烦。

如果您使用访问权限,可能会了解更多关于调试AcriveRecord然后您曾经关心过(这可能不是一件坏事)

Maudite写道:

访问时为真= -1而不是1

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

总而言之,这几乎不是一个问题,因为你用来连接后端的驱动程序会将WHERE子句中的True正确转换为适当的值。 唯一的例外可能是直通查询,但在这种情况下,您应该在Access外部编写SQL并针对后端对其进行测试,并将工作SQL粘贴到Access中的直通查询的SQL视图中。

Maudite写道:

Access以不同于常规TSQL的方式处理日期。

同样,如果您不通过ODBC或OLEDB驱动程序,这将只是一个问题,它将负责将Jet SQL转换为TSQL。

Maudite写道:

你可能会遇到创建关系的麻烦。

我不确定你为什么要让Access应用程序改变后端的模式,所以在我看来这似乎是一个非问题。

你应该真正谈论它们允许SQLite。 设置起来非常简单,并且像Access一样运行(作为位于同一服务器上的应用程序旁边的文件)。

首先,你真的想要使用sqlite。

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

如果您的客户足够肛门只允许您使用经批准的数据库列表进行开发,那么他们可能会更关注Jet已被 删除并且不再获得MS的支持。

这可能会为您使用真正的数据库提供一些弹药。 祝好运