Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Try SQLite

  • SQLite

  • You need to install the development package for libsqlite3

  • On Ubuntu

sudo apt-get install libsqlite3-dev
require "sqlite3"

# Based on the example in the documentation
db_file = "data.db"
if File.exists?(db_file)
  puts "File #{db_file} already exists. Aborting"
  exit(1)
end
DB.open "sqlite3://#{db_file}" do |db|
  db.exec "CREATE TABLE contacts (name TEXT, age INTEGER)"
  db.exec "INSERT INTO contacts VALUES (?, ?)", "John Doe", 30

  args = [] of DB::Any
  args << "Sarah"
  args << 33
  db.exec "INSERT INTO contacts VALUES (?, ?)", args: args

  puts "max age:"
  puts db.scalar "SELECT max(age) FROM contacts" # => 33

  puts "contacts:"
  db.query "SELECT name, age FROM contacts ORDER BY age DESC" do |rs|
    puts "#{rs.column_name(0)} (#{rs.column_name(1)})"
    # => name (age)
    rs.each do
      puts "#{rs.read(String)} (#{rs.read(Int32)})"
      # => Sarah (33)
      # => John Doe (30)
    end
  end
end