shard-crystal-sqlite3/README.md

51 lines
1.4 KiB
Markdown
Raw Normal View History

2016-06-27 17:25:55 +00:00
# crystal-sqlite3 [![Build Status](https://travis-ci.org/crystal-lang/crystal-sqlite3.svg?branch=master)](https://travis-ci.org/crystal-lang/crystal-sqlite3)
2015-03-12 21:21:33 +00:00
SQLite3 bindings for [Crystal](http://crystal-lang.org/).
2016-06-27 17:08:21 +00:00
Check [crystal-db](https://github.com/crystal-lang/crystal-db) for general db driver documentation. crystal-sqlite3 driver is registered under `sqlite3://` uri.
2015-03-13 00:08:01 +00:00
2016-06-27 17:08:21 +00:00
## Installation
2015-03-13 00:08:01 +00:00
2016-06-27 17:08:21 +00:00
Add this to your application's `shard.yml`:
2015-03-12 21:21:33 +00:00
2015-11-28 13:07:42 +00:00
```yml
dependencies:
sqlite3:
2016-06-27 17:25:55 +00:00
github: crystal-lang/crystal-sqlite3
2015-03-12 21:21:33 +00:00
```
2015-03-13 00:08:01 +00:00
### Usage
2015-07-01 01:51:34 +00:00
```crystal
2015-03-13 00:08:01 +00:00
require "sqlite3"
2016-02-04 00:50:41 +00:00
DB.open "sqlite3://./data.db" do |db|
db.exec "create table contacts (name text, age integer)"
2016-02-04 00:50:41 +00:00
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
2016-02-04 00:50:41 +00:00
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
2015-03-13 00:08:01 +00:00
end
```
### DB::Any
2021-02-28 17:18:08 +00:00
* `Time` is implemented as `TEXT` column using `SQLite3::DATE_FORMAT_SUBSECOND` format (or `SQLite3::DATE_FORMAT_SECOND` if the text does not contain a dot).
* `Bool` is implemented as `INT` column mapping `0`/`1` values.