[2021.5] Ruby/DBI はすでに完全に廃れています。'dbi' gem パッケージは 2010 年が最終です。'activerecord' が代替です。
Ruby/DBIライブラリのクラス一覧
Ruby/DBIライブラリは、データベースにアクセスするためのクラス、SQLのデータ型に対応するクラス、およびその他のクラスからなります。また、これらのクラスをサポートするためのモジュールもあります。
クラス一覧
クラス名 主なクラスの内容
----------------------------------- ----------------------------
Object
Array
DBI::Row 行を表すクラス
ColumnInfo 列に関する情報
DBI::Base
DBI::BaseDatabase
DBI::BaseDriver
DBI::BaseStatement
DBI::Binary SQLのバイナリ型
DBI::Date SQLの日付型
DBI::Handle
DBI::DatabaseHandle データベースの操作
DBI::DriverHandle
DBI::StatementHandle カーソル操作および列情報
DBI::SQL::BasicQuote::Coerce
DBI::SQL::PreparedStatement
DBI::Time SQLの時刻型
DBI::Timestamp SQLの日時型
RuntimeError
DBI::Error
DBI::DatabaseError
DBI::DataError
DBI::IntegrityError
DBI::InternalError
DBI::NotSupportedError
DBI::OperationalError
DBI::ProgrammingError
DBI::InterfaceError
DBI::NotImplementedError
DBI::Warning
モジュール一覧
モジュール名
----------------------------
DBI
DBI::DBD
DBI::SQL
DBI::SQL::BasicBind
DBI::SQL::BasicQuote
DBI::Utils
DBI::Utils::ConvParam
DBI::Utils::TableFormatter
DBI::Utils::XMLFormatter
DBIモジュール
DBIモジュールは、DBMSへ接続するためのクラスメソッドが定義されています。
クラスメソッド
- connect(driver_uri, user = nil, auth = nil, params = nil)
- DBMSに接続し、データベースを利用可能にする。driver_uriでDBMSおよびデータベースを指定する。user、authでユーザー、パスワードを指定する。paramsは、DBMS特有のオプションを指定する。
connectメソッドは、DBI::DatabaseHandleオブジェクトを返す。
DBI::DatabaseHandleクラス
DBI::DatabaseHandleクラスは、データベースに対してSQL文の実行などを行うためのクラスです。
スーパークラス: | DBI::Handle
|
---|
includeするクラス: | DBI::Utils::ConvParam モジュール
|
---|
インスタンスメソッド
- [attr]
- DBMS依存のオプションの値を得る。attrは"AutoCommit"など。
- [atrr] = value
- DBMS依存のオプションの値を設定する。
- columns(table_name)
- table_nameで指定される表の列の一覧を得る。戻り値は
ColumnInfo
の配列。表が見つからない場合は、[]
を返す。
- commit
- 現在までの変更をコミットする。transactionブロックからは抜けない。commitの後ろでrollbackしても、commitまでのSQL文は反映される。
- disconnect
- データベースへの接続を切断する。すでに切断されているときに呼び出すとInterfaceError例外を発生させる。
- do(sql_stmt {, arg, ...})
- SELECT文以外のSQL文を実行する。処理行数(挿入した行数など)を返す。
- execute(sql_stmt {, arg, ...})
- SELECT文を実行する。DBI::StatementHandleオブジェクトを返す。このオブジェクトをハンドルにしてカーソル操作を行うことができる。ハンドルは、DBI::StatementHandle#finishで閉じること。
- execute(sql_stmt {, arg, ...}) {|statement_handle| ...}
- SELECT文を実行する。ブロック変数としてDBI::StatementHandleオブジェクトstatement_handleを渡す。statement_handleを使って、カーソル操作を行える。ブロックから抜けるときに、自動的にハンドルが閉じられる。
- quote(string)
- 引数string内の危険な文字をエスケープした文字列を返す。
- rollback
- 現在までの変更をロールバック(破棄)する。transactionブロックからは抜けない。rollbackの後ろにあるSQL文は、正常にtransactionブロックから抜けた場合には、データベースに反映される。
- select_all(sql_stmt {, arg, ...})
- SELECT文を実行する。導出表を
DBI::Row
オブジェクトの配列で返す。
- select_all(sql_stmt {, arg, ...}) {|row| ...}
- SELECT文を実行する。導出表の各行について、ブロックを呼び出す。ブロック引数rowはDBI::Rowオブジェクト。
- select_one(sql_stmt {, arg, ...})
- SELECT文を実行し、導出表の最初の一行を返す。戻り値は
DBI::Row
オブジェクト。取り出す行がなければ、nilを返す。
- tables
- 実表およびビュー表の一覧を、表の名前の配列で返す。
- transaction {|database_handle| ...}
- トランザクションを実行する。database_handleはself。ブロック内で例外が発生するとロールバックする。そうでなければ(正常にブロックから抜ければ)コミットする。
ブロック内でcommitまたはrollbackメソッドを呼び出すと、そこまでのSQL文をコミットまたはロールバックする。ブロックからは自動的には抜けない。
transactionメソッドは入れ子にしてもよい。内側のtransactionのブロック内でcommitまたはrollbackした場合は、内側のブロック内のSQL文だけが影響を受ける。
DBI::StatementHandleクラス
DBI::StatementHandleクラスは、カーソル操作、列情報を得るため、あるいは事前コンパイルしたSQL文の実行のために使われます。
SQL文を事前にコンパイルしても、PostgreSQL、MySQL、SQLiteのいずれでも効果がないので、本書では割愛します。
スーパークラス: | DBI::Handle
|
---|
includeするモジュール: | DBI::Utils::ConvParamモジュール、Enumerableモジュール
|
---|
インスタンスメソッド
- cancel
- カーソル操作を終了します。finishメソッドと異なり、fetchのみできなくなります。
- column_info
- 列情報を得ます。列情報を格納したDBI::ColumnInfoオブジェクトの配列を返します。
- column_names
- 列名の配列を返します。
- each {|row| ...}
- SELECT文を実行した結果得られた各行についてブロックを呼び出します。fetchメソッドのブロックを取る版です。eachメソッドから抜けるときにカーソルは自動的に閉じられます。
- fetch
- 導出表の次の1行を取り出します。取り出す行がなければnilを返します。戻り値はDBI::Rowオブジェクトです。
- fetch_many(count)
- 導出表の次のcount行を取り出します。戻り値はDBI::Rowオブジェクトの配列です。取り出す行がなければ[]を返します。
- fetch_scroll(direction, offset = 1)
- 次の行、前の行、あるいは指定した行を取り出します。directionは、次のいずれかです。DBI::Rowオブジェクトを返します。
- SQL_FETCH_NEXT
- SQL_FETCH_PRIOR
- SQL_FETCH_FIRST
- SQL_FETCH_LAST
- SQL_FETCH_ABSOLUTE
- SQL_FETCH_RELATIVE
- fetchable?
- fetch可能であれば真を返します。cancelメソッドを呼ぶとfetchできなくなります。
- finish
- DBI::StatementHandleオブジェクトのすべての操作を終了します。finishを呼び出したあとでは、他のメソッド呼び出しは失敗します。
- rows
- 最後に実行されたSQL文によって影響を受けた行数を返します。