关于使Rails与Access后端一起运行的任何提示?

时间:2020-03-05 18:41:32  来源:igfitidea点击:

我不禁要问,但是我的客户可能没有提供其他SQL(或者类似SQL的)解决方案。我知道Access有一些SQL钩子。它们足以用于基本ActiveRecord吗?

之后:

我感谢使用其他数据库的所有建议,但请相信我:我已经尝试说服他们。有一个"已批准"列表,并且上面没有SQL数据库。将某物列入清单可能需要一年多的时间,而此项目将在三周内完成。

解决方案

回答

这是一个很长的路要走,但是有一个ActiveRecord的ODBC适配器可能会起作用。

回答

另一个更复杂但在我们被迫执行时可能会起作用的选择是,编写一层RESTful Web服务,以将Access暴露给rails。如果我们在设计上很谨慎,则ActiveResoure可以直接使用那些RESTful Web服务,这将为我们提供许多ActiveRecord的功能。

回答

Access中有些奇怪的事情可能会引起问题,我不知道ODBC是否可以解决问题。如果这样做@John Topley是正确的,ODBC将是我们唯一的选择。

  • 正确访问= -1而不是1
  • Access对待日期的方式与常规TSQL不同。
  • 我们可能会在建立关系时遇到麻烦。

如果我们拥有访问权限,则可能会了解有关调试AcriveRecord的更多信息,而我们曾经关心过(这可能不是一件坏事)

回答

似乎这里有一个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中尝试过后,我会发布更多内容

回答

我们应该真正让他们说服他们允许SQLite。它的设置非常简单,并且可以像Access一样操作(作为位于同一服务器上应用程序旁边的文件)。

回答

首先,我们真的想使用sqlite。

以我的经验,Access本身是一堆[已编辑],但是它使用的Jet数据库引擎实际上非常快,并且可以处理一些非常复杂的SQL查询。如果我们找到可以正常工作的Rails适配器,我会说我们会没事的。只是在Rails应用程序运行时不要通过访问前端打开数据库:-)

如果客户只允许我们使用经过批准的数据库列表进行开发,则他们可能会担心Jet已弃用并且将不再从MS获得支持。

这可能会在我们使用真实数据库的过程中给我们一些弹药。祝你好运

回答

莫德写道:

True in access = -1 not 1

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

综上所述,这几乎不是问题,因为无论我们使用什么驱动程序连接到后端,都可以将WHERE子句中的True正确转换为适当的值。唯一的例外可能是直通查询,但是在这种情况下,我们应该在Access外部编写SQL并在后端进行测试,然后将有效的SQL粘贴到Access中直通查询的SQL视图中。

莫德写道:

Access treats dates differently than regular TSQL.

同样,如果我们不使用ODBC或者OLEDB驱动程序,这只会成为问题,这将为我们解决将Jet SQL转换为TSQL的麻烦。

莫德写道:

You might run into trouble creating relations.

我不确定为什么要让Access应用程序更改后端的架构,所以在我看来这像是非问题。