データベース接続

mysqlに接続。アクセスクラス

dbconnect.rb


class DBConnect

 #======== コンストラクタ ========
 #
 #DB接続値 ホスト名、ユーザー、パスワド、DB名
 #
 #============================
 
 def initialize( )
  
  @host = "xxx.xxx.xxx.xxx"
  @user = "xxxxx"
  @pass = "??????"
  @db = "test"
   
 end
 
 #======== DBConnect ========
 #
 #DB接続
 #
 #===========================
 
 def open()
 
  @my = Mysql.new(@host,@user,@pass)
  @my.select_db(@db)
 
 end
 
 #======== GetResultSet ========
 #
 #Result値取得
 #
 #=============================
   
 def result(sql)
 
  begin
   rs = @my.query(sql)
  rescue
   rs = nil
  ensure
   return rs
  end
 
 end
 
 #======== Execute ========
 #
 #実行
 #
 #========================
 
 def execute(sql)
 
  begin
   @my.query(sql)
   flag = true
  rescue
   flag = false
  ensure
   return flag
  end
 
 end
 
 #======== DBClose ========
 #
 #DBクローズ
 #
 #=========================
 
 def close()
 
  @my.close
 
 end
 
end
  

呼び出し元、インスタンス

dbaccess.cgi


require "mysql" #mysqlを使う
require "dbconnect" #上で作ったコネクトクラス
 
#インスタンス生成、オープン
db = DBConnect.new
db.open

#1件だけデータを取る
sql = "SELECT NAME FROM ruby WHERE ID = 1"
rs = db.result(sql)
 
row=rs.fetch_hash
name = row['NAME']
 
#複数データを取る
sql = "SELECT NAME FROM ruby"
rs = db.result(sql)
 
if rs.num_rows != 0 then
 rs.each_hash do |f|
  name = f['NAME']
 end
end
 
#DB登録
sql = "INSERT INTO ruby (NAME) values ('kazan')"
rs = db.execute(sql)
 
#DB更新
sql = "UPDATE ruby SET NAME='kazan'"
rs = db.execute(sql)
 
#DB削除
sql = "DELETE FROM ruby"
rs = db.execute(sql)
 
#クローズ
db.close