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

apollo's Wiki - RDB::Connection_ex Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

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

$(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_ex ( *args )

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

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

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

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

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

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

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

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

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

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

引数:

what は項目名、

from は[[テーブル]]

where はSQL[[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, rec_count ( from, where=nil, mark='*')mark='*' )

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

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

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

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

内部処理:

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

と同じ。

!!! rec_exist?(from, where=nil)rec_exist? ( from, where=nil )

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

内部処理:

rec_count(from, where) != 0

と同じ。

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

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

!!! table_create(table_name, col_def)table_create ( table_name, col_def )

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

!!! table_drop(table_name)table_drop ( table_name )

テーブルを削除する。

!!! table_exist?(table_name)table_exist? ( table_name )

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

!!! table_recreate(table_name, col_def)table_recreate ( table_name, col_def )

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

!!! transaction{}transaction { .. }

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

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

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

----