RubyでのSQLite3の使い方

sqlite3の使い方である。
autoincrementを明示的に選択しなくても良い感じにしてくれる模様。
レコード削除をしても採番を残しておきたい場合はautoincrementを宣言しないとダメ。
名前付きプレースホルダも使える。

Gemfile

gem 'sqlite3'

bundle install

require 'pp'
require 'sqlite3'

def create
  db = SQLite3::Database.new("crawler.db")
  return db
end

def create_table db
  sql = <<-SQL
CREATE TABLE IF NOT EXISTS crawler(
  id integer primary key,
  name text,
  path text,
  created_at TIMESTAMP DEFAULT (DATETIME('now','localtime'))
);
SQL
  db.execute sql
end

def test_insert db
  sql = <<-SQL
insert into crawler(name,path) values('#{Time.now}','/path/to/amime');
SQL
  db.execute sql
end

def test_select db
  sql = <<-SQL
select * from crawler
SQL
  ar = db.execute sql
  ar.each {|row|
    pp row
  }
end

def truncate_table db
  sql = <<-SQL
truncate table crawler
SQL
end
def delete_table db,id
  sql = <<-SQL
delete from crawler where id = :id
SQL
  db.execute(sql,:id => id)
end

# main
db = create
create_table db
10.times {|i|
  #  test_insert db
}
delete_table db , 30
test_select db
# truncate_table db

db.close