连接数据库

连接数据库
Active Record 把数据库连接的概念抽象出来,有助于程序处理各种特殊数据库的底层
细节。相反,Active Record 应用程序使用通常的调用,代理了一组数据库适配器的细节。
(This abstraction breaks down slightly when code starts to make SQL-based
queries, as we’ll see later.)
指定连接的一种方式是使用establish_connection()类方法。[在Rails 应用程序中,
另一种特殊的连接方式,我们在178 页讨论。]举例来说,下面调用在服务器dbserver.com
上使用给定的用户名字和口令,创建了一个对名为railsdb 的MySQL 数据库的连接。这是所
有的model 类共用的缺省连接。
ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:host => "dbserver.com",
:database => "railsdb",
:username => "railsuser",
:password => "railspw"
)
Active Record 支持DB2,MySQL,Oracle,Postgres,SqlServer 和SQLite 数据库。每
个适配器都接受有些不同的连接参数,像图14.2 显示的。注意:Oracle 适配器被称为oci。

连接和model 类相关,每个类都从父类中继承了它的父类的连接。ActiveRecord::base
是所有Active Record 类的基类,对于你定义的所有Active Record 类设置一个缺省的连接。
但是,在你需要时,你可以覆写它。
下面的例子,我们大多数应用程序的表基本上是在MySQL 中的online 数据库。但由于某
种原因,customer 表在backend 数据库中。
ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:host => "dbserver.com",
:database => "online",
:username => "groucho",
:password => "swordfish")
class LineItem < ActiveRecord::Base
# ...
end
class Order < ActiveRecord::Base
# ...
end
class Product < ActiveRecord::Base
# ...
end
class Customer < ActiveRecord::Base
# ...
end
Customer.establish_connection(
:adapter => "mysql",
:host => "dbserver.com",
:database => "backend",
:username => "chicho",
:password => "piano")
当我们在本书先前版本中写Depot 应用程序时,我们没有使用establish_connection()
方法。相反,我们在config/database.yml 文件内指定连接参数。对大多数Rails 应用程序
来说,这会很好地工作。这并不只是在代码外部保持了所有连接信息,它对Rails 测试和开
也会很好地工作。图14.2 中的所有参数也可用在YAML 文件中。它的更多细节在178 页的13.3
节中。
最后,你可以结合这两种方式。如果你传递一个符号给establish_connection(),Rails
查看database.yml 文件内段的名字,并以找到参数进行连接。这样你可以在你的代码外面保
持所有的连接细节。

你可能感兴趣的:(oracle,mysql,应用服务器,ActiveRecord,Rails)