Hitsuji_monのブログ~ 村上春樹のあれ ~

文学好きな組み込み系エンジニア

【#100DaysOfCode】Day14 「作りながら学ぶRuby入門」19章 〜Ruby/DBI〜

22:30に帰宅。今日は疲れた。
ということで、せっせとRubyに励む。

Day14

「作りながら学ぶRuby入門」19章 Ruby/DBI:データベース接続ライブラリ

  • まずDBI(データベースインターフェース)とは何か
  • Ruby/DBI とは何か

について理解する。


1. DBIとは何か

  • データベースの種類に依存しない抽象化されたアクセスを提供する口(インターフェース)のこと

2. Ruby/DBIとは何か

  • RubyにおけるDBIのこと
  • データベースの種類がSQliteだろうが、MySQLだろうが関係ない。

以下のサイトのスライド画像が、参考書に載ってたやつと同じで分かりやすい。
ので使わせていただく。
slidesplayer.net

f:id:Hitsuji_mon:20190530003158j:plain
参考サイト様のスライド画像


今回学んだこと

データベースの操作方法: SQLite3

  • テーブルへのデータ追加:
    $ insert into データベース名 values (キー, 値)
  • テーブルのデータ検索:
    $ select * from データベース名
    $ select * from データベース名 where 条件 age>40とか
  • テーブルの項目抽出
    $ select 項目 from データベース名
  • テーブルのデータ削除
    $ delete from データベース名 where 条件

Ruby/DBIの操作方法

例:students01.db

  • データベースへの接続
dbh = DBI.connect( 'DBI:SQLite3:students01.db' )
  • テーブルのデータを検索
dbh.select_all(~~~)


ということで、Ruby/DBIを使って、データ検索し表示するコード

# 「作りながら学ぶRuby入門」19章
# Ruby/DBI でデータベースを利用

require 'rubygems'  # DBD, BDIをRubyGemsでインストールした時には記述
require 'dbi'       # DBIを使う

# dbhを作成し、データベース'students01.db'に接続する
# 引数は、データベース名(DSN=data source name) を指定する
# DSNの第1要素は、データソースの種別: DBIでは'DBI'
# DSNの第2要素は、ドライバのの種別: 'SQLite3'
# DSNの第3要素は、データベースファイル名: 'students01.db'
dbh = DBI.connect( 'DBI:SQLite3:students01.db' )

# select文でデータを検索し、読み込んだデータを表示する
dbh.select_all('select * from students') do | row |
  # SQL[select * from students ]を実行し、
  # 1行ずつ受け取って、ブロックを処理する
  STDOUT.print "row=#{row}           \n"
  STDOUT.print "  name = #{row[0]}\n"
  STDOUT.print "  age  = #{row[1]}\n"
  STDOUT.print "\n"
end

# データベースとの接続を終了する
dbh.disconnect