ユーザ用ツール

サイト用ツール


alrdbw:接続オブジェクトの生成

接続オブジェクトの生成

データベース接続情報(DSN)を用意し、利用するRDBに応じたライブラリをrequireした後、connect()メソッドでオブジェクトを生成します。

SQLite3の例
(gem sqlite3)

DSN = "/PATH/TO/FILE"
require "al_rdbw_sqlite" 
db = AlRdbw.connect( DSN )

PostgreSQLの例
(gem pg)

DSN = { host:"localhost", dbname:"testdb1", user:"testuser1", password:"testpass1" }
require "al_rdbw_postgres" 
db = AlRdbw.connect( DSN )

MySQLの例
(gem mysql)

DSN = { host:"127.0.0.1", db:"testdb1", user:"testuser1", passwd:"testpass1" }
require "al_rdbw_mysql" 
db = AlRdbw.connect( DSN )

接続は自動的に一元化されます

一度オブジェクトを作るとそれが内部に保存され、同じ接続情報でオブジェクトを作ろうとすると同じオブジェクトが返ります。

db1 = AlRdbw.connect( DSN )
db2 = AlRdbw.connect( DSN )
db1 == db2  # => true

また、最初に作成したオブジェクトはデフォルトオブジェクトとして、DSNを指示しなくとも取り出すことができます。

db1 = AlRdbw.connect( DSN )
db2 = AlRdbw.connect()
db1 == db2  # => true

接続の遅延

実際のDBへの接続は、それが必要になるまで遅延されます。

db = AlRdbw.connect( DSN )   # まだ接続されない
db.select( sql )             # バックグラウンドで接続開始され、sqlが実行される

接続を明示的に行うには、open_connection()メソッドを使います。

db = AlRdbw.connect( DSN )
db.open_connection()

複数のDBへの接続

滅多に必要になることは無いと思いますが、複数のDBへ同時に接続することもできます。
この場合は、以下のとおり接続種類を指定するなどのより低レベルのAPIを使います。

DSN1 = "/PATH/TO/FILE1"
DSN2 = "/PATH/TO/FILE2"
DSN3 = "host=localhost dbname=testdb1 user=testuser1 password=testpass1"
require "al_rdbw_sqlite" 
require "al_rdbw_postgres" 
 
db1 = AlRdbwSqlite.connect( DSN1 )
db2 = AlRdbwSqlite.connect( DSN2 )
db3 = AlRdbwPostgresql.connect( DSN3 )
alrdbw/接続オブジェクトの生成.txt · 最終更新: 2019/02/12 00:06 by hirohito