Create  Edit  Diff  Phillro Industries  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

RDB::Connection_ex

コネクションクラスを拡張するためのモジュール

$(apollo)/lib/rdb/rdb.rb で定義されている。


require 'phi'
require "rdb/rdb"
require "methods_for_wiki"
puts RDB::Connection_ex.methods_for_wiki

execute_ex ( *args )

各コネクションクラスの execute メソッドを呼び出すが、例外が生成したときに実行内容をエラーメッセージに追加して表示する。

internal_query ( *args ){| query | .. }

内部的に用意されたクエリクラスのオブジェクトをブロック引数に送って実行する。ブロック終了時にはクエリオブジェクトは close される。

args は各クエリクラスの open メソッドに送られる。

作成されるクエリオブジェクトは、各コネクションクラスの new_queryメソッドが返したオブジェクト。

internal_table ( table_name=nil ){| table | .. }

内部的に用意されたテーブルクラス?のオブジェクトをブロック引数に送って実行する。ブロック終了時にはテーブルオブジェクトは close される。

作成されるクエリオブジェクトは、各コネクションクラスの new_tableメソッド?が返したオブジェクト。

lookup ( what, from, where, params=[] )

internal_query を使ってデータセット?を取り出し、そのデータセットの最初の行?の最初の項目?の値を返す。

引数:

what は項目名、

from はテーブル?

where はSQLの条件句?

params はSQLパラメータ?の値の配列。

説明:

"SELECT #{what} FROM #{from} WHERE #{where}"

といったSQL文を作成して、openしてデータセットを取り出す。

利用例:

名前に対応したidを取り出すといった簡単な作業を行うのに便利。

 id = DB.lookup( "id", "apollo-users", "name=:name",["たけ(tk)"])

合計値を取り出す場合

 sum = DB.lookup "SUM(budget)", "department", "head_dept='#{val}'"

カウンタを取り出す場合

 sid = DB.lookup "GEN_ID(#{gen_name},1)", "dummy_for_gen", nil

などにも使える。

rec_count ( from, where=nil, mark='*' )

指定されたテーブルのレコード数を返す。

where が指定された場合には、その条件にマッチするレコード数を返す。

mark は別の形での条件を指定する。

  • "*" であれば NULL を含んだすべてのレコード数を返す。
  • 'ALL' であれば NULL 以外のレコード数を返す。
  • 'DISTINCT' であれば重複を取り除き、NULLを除外したレコード数を返す。

内部処理:

lookup( "COUNT(#{mark})" , from, where )

と同じ。

rec_exist? ( from, where=nil )

指定された条件にマッチする行があるかどうかを返す。

内部処理:

rec_count(from, where) != 0

と同じ。

select ( what, from, where, params=[] )

"SELECT #{what} FROM #{from} WHERE #{where}" というSQL文を作成し、オープンして、データセットを取り出し、ハッシュの配列にして返す。(データセットを返すのでないことに注意)。

table_create ( table_name, col_def )

"CREATE TABLE #{table_name} ( #{col_def} )" というSQL文を実行するのとほぼ同じ。

table_drop ( table_name )

テーブルを削除する。

table_exist? ( table_name )

テーブルがあるかどうかを返す。

table_recreate ( table_name, col_def )

テーブルを削除して作りなおす。

transaction { .. }

ブロック内でトランザクションを実行する。

ブロック終了時にトランザクション実行中(in_transaction)である場合にはcommitする。

ブロック内で例外が生成された場合には rollback する。


Last modified:2004/11/08 18:51:54
Keyword(s):
References:[ext-rdb-RDB-constants] [new_queryメソッド] [rdb.rb]