pure-rubyのシンプルなデータベース。インストールの必要がなく手軽に扱える。
本ドキュメントは KirbyBase Version 1.6 用です。
最新版の Version 2.2 では、仕様が変更されているようです。
require 'kirbybase'
引数を指定しない場合は、シングルユーザーモードでになる。
db = KirbyBase.new
serverを引数にすると、マルチユーザーモードになる。
db = KirbyBase.new('server')
テーブルは、KirbyBase#create(name, fields)メソッドで作成する。
引数は、
使用できるデータ型
String型の「氏名」フィールド、 Integer型の「年齢」フィールド、 String型の「部署」フィールド、を持つ「社員.tbl」テーブルを作成する。
# テーブルを作成する
TABLE = '社員.tbl' #テーブル名
result = db.create(
TABLE,
["氏名:String","年齢:Integer","部署:String"]
)
テーブルの作成に成功したときはtrueを返す。
# 作成に成功したときはtrueを返す
if result == true
puts "テーブルを作成しました。"
end
レコードは、KirbyBase#insert(name, values)メソッドで登録する。
引数は、
KirbyBase#insert(name, values)メソッドは、一意のレコード番号を返す。
# 配列でレコードを登録する
recno = db.insert(
TABLE,
["橋本", 26, "広報部"]
)
# レコード番号
puts recno # => 1
# Hashでレコードを登録する
recno = db.insert(
TABLE,
{"氏名" => "小泉", "年齢" => 35, "部署" => "営業部"}
)
# レコード番号
puts recno # => 2
レコードは、KirbyBase#select(name, fields, searchData, filter=nil, sortField=nil, ascending=true, useRegExp=true, retDasS=false)メソッドで登録する。
引数は、
返値はレコードの配列。
# すべてのレコードを取得する
db.select(TABLE, ['recno'],['*']).each do |rec|
puts rec.join(',')
end
# 部署が営業部のレコードを取得する
db.select(TABLE, ['部署'],['営業部']).each do |rec|
puts rec.join(',')
end
# 年齢が40以下のレコードを取得する
db.select(TABLE, ['年齢'],['<40']).each do |rec|
puts rec.join(',')
end
# 部署が営業部で、年齢が40未満のレコードを取得する
db.select(TABLE, ['部署','年齢'],['営業部','<40']).each do |rec|
puts rec.join(',')
end
# 氏名と年齢だけ取得する
db.select(TABLE, ['recno'],['*'], ["氏名","年齢"]).each do |rec|
puts rec.join(',')
end
# 年齢順に並び替えて取得する
db.select(TABLE, ['recno'],['*'], nil, "年齢").each do |rec|
puts rec.join(',')
end
# 降順
db.select(TABLE, ['recno'],['*'], nil, "年齢", false).each do |rec|
puts rec.join(',')
end
レコードは、KirbyBase#updateメソッドで更新する。
引数は、
返値は、変更したレコード数。
# 小泉の部署を営業部に更新する
db.update(TABLE, ["氏名"],["小泉"],["広報部"],["部署"])
レコードは、KirbyBase#delete(name, fields, searchData, useRegExp=true)メソッドで削除する。
引数は、
返値は、削除したレコード数。
# 亀井を削除
db.delete(TABLE, ["氏名"],["亀井"])
空のレコードの削除は、KirbyBase#pack(name)メソッドを使用する。データベースファイルの空レコードを削除する。
引数
返値は、削除した空レコードの数。
# 空のレコードの削除
db.pack(TABLE)
テーブルの存在確認は、KirbyBase#exists?(name)メソッドを使用する。
引数
テーブルがすでに存在するときはtrueを返す。
テーブルの削除は、KirbyBase#drop(name)メソッドを使用する。
引数
削除したときはtrueを返す。
# すでにテーブルがあれば削除する
if db.exists?(TABLE)
db.drop(TABLE)
end