Top / Programming / Ruby / Ruby データベースライブラリ / KirbyBase

KirbyBase

pure-rubyのシンプルなデータベース。インストールの必要がなく手軽に扱える。

注意

本ドキュメントは KirbyBase Version 1.6 用です。

最新版の Version 2.2 では、仕様が変更されているようです。

ダウンロード

インストール

使用方法

KirbyBaseをロードする。

require 'kirbybase'

インスタンスを作成する

引数を指定しない場合は、シングルユーザーモードでになる。

db = KirbyBase.new

serverを引数にすると、マルチユーザーモードになる。

db = KirbyBase.new('server')

テーブルを作成する

テーブルは、KirbyBase#create(name, fields)メソッドで作成する。

引数は、

  1. name テーブル名。
  2. 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)メソッドで登録する。

引数は、

  1. name テーブル名
  2. values データの配列、または、データのHash

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)メソッドで登録する。

引数は、

  1. name テーブル名
  2. fields 検索条件のフィールド名の配列
  3. searchData 検索条件の値の配列。
  4. filter 取得するフィールド名。nilのときは前フィールドを取得する。初期値はnil。
  5. sortField ソートフィールド。初期値はnil。
  6. ascending 並び順。trueのときは昇順。falseのときは降順。初期値はtrue。
  7. useEegExp 正規表現を使用するか。trueの時は使用する。初期値はtrue。
  8. retDasS Date/DateTimeフィールドの返値の型。falseのときはDate/DateTimeクラスを返す。trueの時はStringを返す。trueの場合、Date/DateTimeに変換しない分、高速である。初期値は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メソッドで更新する。

引数は、

  1. テーブル名。
  2. 検索対象のフィールド名の配列。
  3. 検索条件の値の配列。
  4. 更新する値の配列、またはHash。
  5. 更新するフィールド名の配列。初期値はnil。
  6. 正規表現を使用するか。使用するときはtrue。初期値はtrue。

返値は、変更したレコード数。

# 小泉の部署を営業部に更新する
db.update(TABLE, ["氏名"],["小泉"],["広報部"],["部署"])

レコードを削除する

レコードは、KirbyBase#delete(name, fields, searchData, useRegExp=true)メソッドで削除する。

引数は、

  1. naem テーブル名。
  2. fields 検索条件のフィールド名の値。
  3. searchData 検索条件の値の配列。
  4. useRegExp 正規表現を使用するか。使用するときはtrue。初期値はtrue。

返値は、削除したレコード数。

# 亀井を削除
db.delete(TABLE, ["氏名"],["亀井"])

空のレコードの削除

空のレコードの削除は、KirbyBase#pack(name)メソッドを使用する。データベースファイルの空レコードを削除する。

引数

  1. name テーブル名。

返値は、削除した空レコードの数。

# 空のレコードの削除
db.pack(TABLE)

テーブルの存在確認

テーブルの存在確認は、KirbyBase#exists?(name)メソッドを使用する。

引数

  1. name テーブル名。

テーブルがすでに存在するときはtrueを返す。

テーブルの削除

テーブルの削除は、KirbyBase#drop(name)メソッドを使用する。

引数

  1. name テーブル名。

削除したときはtrueを返す。

# すでにテーブルがあれば削除する
if db.exists?(TABLE)
  db.drop(TABLE)
end

更新履歴