Class: AlRdbw

Inherits:
Object
  • Object
show all
Defined in:
lib/al_rdbw.rb

Overview

リレーショナルデータベースラッパー スーパクラス

Constant Summary collapse

@@rdbw_objects =

Returns Rdbwオブジェクトのハッシュ.

Returns:

  • (Hash<AlRdbw>)

    Rdbwオブジェクトのハッシュ

{}
@@default_rdbw_object =

Returns デフォルトRdbwオブジェクト.

Returns:

  • (Object)

    デフォルトRdbwオブジェクト

nil
@@suitable_dbms =

Returns connectメソッドが生成するオブジェクトのためのクラス.

Returns:

  • (Class)

    connectメソッドが生成するオブジェクトのためのクラス

self

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dsn) ⇒ AlRdbw

Note:

constructor

ユーザプログラムからは直接使わない。 オブジェクトの生成は、connect()メソッドを使って行う。



79
80
81
82
83
84
85
86
87
# File 'lib/al_rdbw.rb', line 79

def initialize( dsn )
  # AlRdbwは、バーチャルクラス扱いなので生成をランタイムエラーにしておく。
  raise "Need connect by subclass." if self.class == AlRdbw
  raise "Connection is missing. (No argument.)"  if ! dsn

  @dsn = dsn
  @handle = nil
  @flag_transaction = false
end

Instance Attribute Details

#fieldsArray<Symbol> (readonly)

Returns 直前のselectメソッド実行結果のフィールドリスト.

Returns:

  • (Array<Symbol>)

    直前のselectメソッド実行結果のフィールドリスト



32
33
34
# File 'lib/al_rdbw.rb', line 32

def fields
  @fields
end

#flag_transactionBoolean (readonly)

Returns トランザクション中かを示すフラグ.

Returns:

  • (Boolean)

    トランザクション中かを示すフラグ



29
30
31
# File 'lib/al_rdbw.rb', line 29

def flag_transaction
  @flag_transaction
end

#handleObject (readonly)

Returns データベースハンドル.

Returns:

  • (Object)

    データベースハンドル



26
27
28
# File 'lib/al_rdbw.rb', line 26

def handle
  @handle
end

#select_data_typeSymbol

Returns 取得するデータの形式 :ARRAYにすると配列になる.

Returns:

  • (Symbol)

    取得するデータの形式 :ARRAYにすると配列になる



35
36
37
# File 'lib/al_rdbw.rb', line 35

def select_data_type
  @select_data_type
end

#select_fetch_modeSymbol

Returns selectのデータ取得モード :ROWにすると一行ずつ.

Returns:

  • (Symbol)

    selectのデータ取得モード :ROWにすると一行ずつ



38
39
40
# File 'lib/al_rdbw.rb', line 38

def select_fetch_mode
  @select_fetch_mode
end

Class Method Details

.connect(dsn = nil) ⇒ AlRdbw

Note:

DB wrapper オブジェクトを得る。

名前とは裏腹に、DBSとの接続は開始しない。 接続は、オブジェクトに対しopen_connection()メソッドで意識的に行うか、 あるいは、ヘルパーメソッドを使ったときに自動的に行われる。

Parameters:

  • dsn (String) (defaults to: nil)

    接続情報

Returns:

  • (AlRdbw)

    DBWrapperオブジェクト



59
60
61
62
63
64
65
66
67
68
69
# File 'lib/al_rdbw.rb', line 59

def self.connect( dsn = nil )
  # 既に対象の接続オブジェクトがあれば、それを返す。
  obj = dsn ? @@rdbw_objects[ dsn.hash ] : @@default_rdbw_object
  return obj  if obj

  # オブジェクトの生成と保存
  obj = ((self == AlRdbw) ? @@suitable_dbms : self).new( dsn )
  @@default_rdbw_object ||= obj
  @@rdbw_objects[ dsn.hash ] = obj
  return obj
end

.inherited(subclass) ⇒ Object

継承された場合にそれを保存する。



44
45
46
# File 'lib/al_rdbw.rb', line 44

def self.inherited( subclass )
  @@suitable_dbms = subclass
end

Instance Method Details

#closeObject Also known as: purge

Note:

コネクションクローズ コネクションをクローズし、オブジェクト配列から削除を行う。



95
96
97
98
99
100
101
102
103
104
# File 'lib/al_rdbw.rb', line 95

def close()
  if @@default_rdbw_object == self
    @@default_rdbw_object = nil
  end
  @@rdbw_objects.delete_if { |k,v| v == self }

  @handle.close() if @handle
  @handle = nil
  @flag_transaction = false
end

#get_handleObject

Note:

RDBSとの接続ハンドルを得る

接続がまだ行われていなければ、自動的に接続を開始する。

Returns:

  • (Object)

    handle



115
116
117
118
119
120
# File 'lib/al_rdbw.rb', line 115

def get_handle()
  if ! @handle
    open_connection()
  end
  return @handle
end

#transaction_active?Boolean

トランザクション中か?

Returns:

  • (Boolean)

    はい/いいえ



128
129
130
# File 'lib/al_rdbw.rb', line 128

def transaction_active?()
  return @flag_transaction
end