SQLite3
is a simple high-level wrapper around SQLite3. It doesn’t intend to wrap everything, but it tries to be useful.
Installation
(load "git@veitheller.de:git/carpentry/sqlite3.git@0.0.6")
Usage
The module SQLite3
provides facilities for opening, closing, and querying
databases.
(load "git@veitheller.de:git/carpentry/sqlite3.git@0.0.6")
; opening DBs can fail, for the purposes of this example we
; ignore that
(defn main []
(let-do [db (Result.unsafe-from-success (SQLite3.open "db"))]
; Let's make sure our table is there
(ignore
(SQLite3.query &db
"CREATE TABLE IF NOT EXISTS mytable (name TEXT, age INT)"
&[]))
; we can prepare statements
(ignore
(SQLite3.query &db
"INSERT INTO mytable VALUES (?1, ?2);"
&[(to-sqlite3 @"Carp") (to-sqlite3 4)]))
; and query things
(println* &(SQLite3.query &db "SELECT * from mytable;" &[]))
(SQLite3.close db)))
Because open
and query
return Result
types, we could also use
combinators!
SQLite
a
is the opaque database type. You’ll need one of those to query anything.
It can be obtained by using open.
open
(Fn [(Ref String a)] (Result SQLite String))
(open s)
opens a database with the filename s
.
If it fails, we return an error message using Result.Error
.
query
(Fn [(Ref SQLite a), (Ref String b), (Ref (Array SQLite3.Type) c)] (Result (Array (Array SQLite3.Type)) String))
(query db s p)
queries the database db
using the query s
and the parameters
p
.
If it fails, we return an error message using Result.Error
.