199 lines
7.2 KiB
HTML
199 lines
7.2 KiB
HTML
<!DOCTYPE HTML>
|
||
|
||
<html>
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||
<link rel="stylesheet" href="style.css">
|
||
</head>
|
||
<body>
|
||
<div class="content">
|
||
<div class="logo">
|
||
<a href="">
|
||
<img src="">
|
||
</a>
|
||
<div class="title">
|
||
sqlite3
|
||
</div>
|
||
<div class="index">
|
||
<ul>
|
||
<li>
|
||
<details>
|
||
<summary>
|
||
<a href="SQLite3.html">
|
||
SQLite3
|
||
</a>
|
||
</summary>
|
||
<ul>
|
||
<li>
|
||
<details>
|
||
<summary>
|
||
<a href="SQLite3.Type.html">
|
||
Type
|
||
</a>
|
||
</summary>
|
||
<ul>
|
||
<li>
|
||
<a href="SQLite3.Type.SQLiteColumn.html">
|
||
SQLiteColumn
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</details>
|
||
</li>
|
||
</ul>
|
||
</details>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="module">
|
||
<h1>
|
||
SQLite3
|
||
</h1>
|
||
<div class="module-description">
|
||
<p>is a simple high-level wrapper around SQLite3. It doesn’t intend
|
||
to wrap everything, but it tries to be useful.</p>
|
||
<h2>Installation</h2>
|
||
<pre><code class="language-clojure">(load "git@veitheller.de:git/carpentry/sqlite3.git@0.0.6")
|
||
</code></pre>
|
||
<h2>Usage</h2>
|
||
<p>The module <code>SQLite3</code> provides facilities for opening, closing, and querying
|
||
databases.</p>
|
||
<pre><code class="language-clojure">(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)))
|
||
</code></pre>
|
||
<p>Because <code>open</code> and <code>query</code> return <code>Result</code> types, we could also use
|
||
combinators!</p>
|
||
|
||
</div>
|
||
<div class="binder">
|
||
<a class="anchor" href="#SQLite">
|
||
<h3 id="SQLite">
|
||
SQLite
|
||
</h3>
|
||
</a>
|
||
<div class="description">
|
||
meta-stub
|
||
</div>
|
||
<p class="sig">
|
||
a
|
||
</p>
|
||
<span>
|
||
|
||
</span>
|
||
<p class="doc">
|
||
<p>is the opaque database type. You’ll need one of those to query
|
||
anything.</p>
|
||
<p>It can be obtained by using <a href="#open">open</a>.</p>
|
||
|
||
</p>
|
||
</div>
|
||
<div class="binder">
|
||
<a class="anchor" href="#Type">
|
||
<h3 id="Type">
|
||
<a href="SQLite3.Type.html">
|
||
Type
|
||
</a>
|
||
</h3>
|
||
</a>
|
||
<div class="description">
|
||
module
|
||
</div>
|
||
<p class="sig">
|
||
Module
|
||
</p>
|
||
<span>
|
||
|
||
</span>
|
||
<p class="doc">
|
||
|
||
</p>
|
||
</div>
|
||
<div class="binder">
|
||
<a class="anchor" href="#close">
|
||
<h3 id="close">
|
||
close
|
||
</h3>
|
||
</a>
|
||
<div class="description">
|
||
external
|
||
</div>
|
||
<p class="sig">
|
||
(Fn [SQLite] ())
|
||
</p>
|
||
<span>
|
||
|
||
</span>
|
||
<p class="doc">
|
||
<p>closes a database.</p>
|
||
|
||
</p>
|
||
</div>
|
||
<div class="binder">
|
||
<a class="anchor" href="#open">
|
||
<h3 id="open">
|
||
open
|
||
</h3>
|
||
</a>
|
||
<div class="description">
|
||
defn
|
||
</div>
|
||
<p class="sig">
|
||
(Fn [(Ref String a)] (Result SQLite String))
|
||
</p>
|
||
<pre class="args">
|
||
(open s)
|
||
</pre>
|
||
<p class="doc">
|
||
<p>opens a database with the filename <code>s</code>.</p>
|
||
<p>If it fails, we return an error message using <code>Result.Error</code>.</p>
|
||
|
||
</p>
|
||
</div>
|
||
<div class="binder">
|
||
<a class="anchor" href="#query">
|
||
<h3 id="query">
|
||
query
|
||
</h3>
|
||
</a>
|
||
<div class="description">
|
||
defn
|
||
</div>
|
||
<p class="sig">
|
||
(Fn [(Ref SQLite a), (Ref String b), (Ref (Array SQLite3.Type) c)] (Result (Array (Array SQLite3.Type)) String))
|
||
</p>
|
||
<pre class="args">
|
||
(query db s p)
|
||
</pre>
|
||
<p class="doc">
|
||
<p>queries the database <code>db</code> using the query <code>s</code> and the parameters
|
||
<code>p</code>.</p>
|
||
<p>If it fails, we return an error message using <code>Result.Error</code>.</p>
|
||
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|