データベース接続情報(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 )
MySQL2の例
(gem mysql2)
DSN = {host:"localhost", database:"testdb1", username:"testuser1", password:"testpass1"} require "al_rdbw_mysql2" 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へ同時に接続することもできます。
この場合は、以下のとおり接続種類を指定するなどのより低レベルの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 )