##
# MySQL CONNECT クラス
# ファイル名：mysql_connect.rb
# 作成日：2008/07/24
# 更新日：2008/07/24
#
# Copyright (C) 2008 Japan Multimedia Equipment, inc. All Rights Reserved.
##

##
require 'mysql'

##
# MySQL CONNECT クラス
#
class Mysql_Connect
  
  attr_accessor :length   # 取得レコード数
  attr_accessor :error    # エラーメッセージ
  
  ##
  # コンストラクタ
  #
  def initialize(host = nil, id = nil, pass = nil, db = nil)
    @host   = host  # 接続ホスト
    @id     = id    # ユーザID
    @pass   = pass  # パスワード
    @db     = db    # 接続DB名
    
    @mdb    = nil   # DBオブジェクト
    
    @length = nil   # 取得レコード数
    @error  = nil   # エラーメッセージ
  end
  
  ##
  # DB接続
  #
  def connect
    # 戻り値初期化
    rs = false
    
    # 接続変数判定
    if @host != nil && @id != nil &&
         @pass != nil && @db != nil && @mdb == nil
      # 接続処理
      begin
        @mdb = Mysql::new(@host, @id, @pass, @db)
        rs = true
      # エラー処理
      rescue Mysql::Error => e
        @error = e.error
      end
    end
    
    return rs
  end
  
  ##
  # DB切断
  #
  def close
    # 戻り値初期化
    re = false
    
    # 接続状態判定
    if @mdb != nil
      # 切断処理
      begin
        @mdb.close
        @mdb = nil
        rs = true
      # エラー処理
      rescue Mysql::Error => e
        @error = e.error
      end
    end
    
    return rs
  end
  
  ##
  # クエリ
  #
  def query(q)
    # 戻り値初期化
    rs = nil
    
    # クエリ実行
    begin
      rec = @mdb.query(q)
      
      # レコード数取得
      @length = rec.num_rows
      
      # レコード取得
      if @length != 0
        n = 0
        rs = Array.new
        
        # レコード行取得
        rec.each_hash do |row|
          rs[n] = Hash.new
          
          # フィールド取得
          row.each do |key, val|
            rs[n][key] = val
          end
          n += 1
        end
      end
    # エラー処理
    rescue Mysql::Error => e
      @error = e.error
    end
    return rs
  end
  
end
