Code前端首页关于Code前端联系我们

将铁路项目连接到 Oracle 数据库的两种方法

terry 2年前 (2023-09-26) 阅读数 50 #数据库

有两种方法可以将 Ails 项目连接到 Oracle 数据库

方法 1

对于本地项目中的前两个 gem
gem 'activerecord-oracle_enhanced-adapter', '~> '
gem ' 版本选择 ruby​​-oci8'

gem 'activerecord-oracle_enhanced-adapter' 可以直接在包中查看。根据你的rail版本

来运行bundle

这时候你会发现报错。 ,安装ruby-oci8的时候报错,所以需要安装oracle客户端和sdk

mac下载地址
https://www.oracle.com/database/technologies/instant-client/macos - intel -x86-downloads.html
linux下载地址

我们下载好OCI和SDK后,解压,把路径放到终端配置里,如果你是zsh就放到.zshrc里,如果你是sidd bash就是在 .bashrc

导出 OCI_DIR=/Users/instantclient_21_1
导出 PATH=$PATH:/Users/instantclient_21_1
=BRA_UTILIENT_CLients/LIstan_client/LIstan_client/LIstan_1/instantclient_21
导出NLS_LANG=

这个配置一定要改成自己文件放置的地方,并且使用绝对路径。配置成功后,重启终端。(通过服务名连接)(config/)库文件中
例如:

oracle_development:
  adapter: oracle_enhanced
  database: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST='IP')(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)))
  username:  '用户名'
  password: '密码'

然后我们就可以在项目中创建一个可以在lib下创建的文件或在模型下的“创建
”下。我在lib下创建了一个名为
的文件。在文件中写入

moduleOracleDataclassMember<ActiveRecord::Base
    establish_connection :oracle_developmentself.table_name ='想要连接的表名'endclassGood<ActiveRecord::Base
    establish_connection :oracle_developmentself.table_name ='想要连接的表名'endend

。这时我们就可以通过rail方法调用oracle数据库中的数据了。

比如

OracleData::Member.first

这就是我们平时使用轨道模型调用数据的方式Rails调用外键时存在写入问题(这个问题还没有具体解决)

但是我们可以通过另一种方法来弥补,可以通过调用ORI8的实例来完成

connection=OCI8.new("用户名","密码","IP:1521/ORCL")
connection.exec("SELECT * FROM tables rownum <= 10")do|r| p r;end

服务器上使用的方法是一样的,不过使用的客户端是Linux就可以了

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门