我不敢问,但我的客户可能没有提供其他 SQL(或类似 SQL)的解决方案。我知道 Access 有一些 SQL 钩子;它们足以满足基本的 ActiveRecord 吗?
之后:
我感谢所有使用其他数据库的建议,但请相信我:我已经尝试过说服他们。有一个“已批准”列表,其中没有 SQL 数据库。将某些东西列入清单可能需要一年多的时间,而这个项目将在三周内完成。
我不敢问,但我的客户可能没有提供其他 SQL(或类似 SQL)的解决方案。我知道 Access 有一些 SQL 钩子;它们足以满足基本的 ActiveRecord 吗?
之后:
我感谢所有使用其他数据库的建议,但请相信我:我已经尝试过说服他们。有一个“已批准”列表,其中没有 SQL 数据库。将某些东西列入清单可能需要一年多的时间,而这个项目将在三周内完成。
这是一个很长的镜头,但有一个适用于 ActiveRecord 的 ODBC 适配器可能会起作用。
这里似乎有一些访问连接适配器:http: //svn.behindlogic.com/public/rails/activerecord/lib/active_record/connection_adapter/msaccess_adapter.rb
database.yml 文件如下所示:
development:
adapter: msaccess
database: C:\path\to\access_file.mdb
我会在使用 Rails 2.1 试用后发布更多内容
另一个更复杂但如果您被迫这样做可能会起作用的选项是编写一层 RESTful Web 服务,将 Access 暴露给 rails。如果您在设计中小心,那些 RESTful Web 服务可以直接由 ActiveResoure 使用,这将为您提供 ActiveRecord 的许多功能。
Access 中有一些奇怪的东西可能会导致问题,我不知道 ODBC 是否会处理它。如果@John Topley 是对的,那么 ODBC 将是您唯一的选择。
如果您使用访问权限,可能会了解更多有关调试 AcriveRecord 的信息,然后您会关心(这可能不是一件坏事)
莫迪特写道:
访问中为真 = -1 而不是 1
不正确。真被定义为不假。因此,如果您想在 WHERE 子句中使用 True,请改用 Not False。这将提供与所有 SQL 引擎的完全跨平台兼容性。
综上所述,这几乎不是问题,因为您用于连接后端的任何驱动程序都会正确地将 WHERE 子句中的 True 转换为适当的值。唯一的例外可能是直通查询,但在这种情况下,您应该在 Access 外部编写 SQL 并针对后端对其进行测试,然后将工作 SQL 粘贴到 Access 中直通查询的 SQL 视图中。
莫迪特写道:
Access 处理日期的方式与常规 TSQL 不同。
同样,如果您不通过 ODBC 或 OLEDB 驱动程序,这只会成为一个问题,它会为您将 Jet SQL 转换为 TSQL。
莫迪特写道:
您可能会在创建关系时遇到麻烦。
我不确定您为什么希望 Access 应用程序更改后端的架构,所以在我看来这不是问题。
你真的应该说服他们允许 SQLite。它的设置非常简单,并且像 Access 一样运行(作为位于同一服务器上应用程序旁边的文件)。