使用 ezsqlite 進行 SQLite 的 CREATE、INSERT、SELECT 操作
任務
資料庫 / SQLite / SQLite 的 CREATE、INSERT、SELECT 操作
使用的 Opam 套件
- ezsqlite 使用版本測試:0.4.2 — 使用的函式庫:ezsqlite
程式碼
開啟或建立(如果不存在)SQLite 資料庫
let db = Ezsqlite.load "employees.sqlite"
建立 employees
資料表。函式 run_ign
(「執行並忽略」)執行查詢並捨棄資料庫回應。
let () =
Ezsqlite.run_ign db
"CREATE TABLE employees (
name VARCHAR NOT NULL,
firstname VARCHAR NOT NULL,
age INTEGER NOT NULL
)"
()
type employee =
{ name:string; firstname:string; age:int }
let employees = [
{name = "Dupont"; firstname = "Jacques"; age = 36};
{name = "Legendre"; firstname = "Patrick"; age = 42}
]
let () =
函式 Ezsqlite.prepare
準備語句,以便稍後將實際值繫結到變數 :name
、:firstname
和 :age
。
let stmt = Ezsqlite.prepare db
{|
INSERT into employees
VALUES (:name, :firstname, :age)
|}
in
依序執行這些 Ezsqlite
函式會將 employee
記錄中的值繫結並執行查詢。
let insert_employee (employee: employee) =
Ezsqlite.clear stmt;
Ezsqlite.bind_dict stmt
[":name", Ezsqlite.Value.Text employee.name;
":firstname", Ezsqlite.Value.Text
employee.firstname;
":age", Ezsqlite.Value.Integer
(Int64.of_int employee.age)];
Ezsqlite.exec stmt
in
employees
|> List.iter insert_employee
iter
函式執行查詢,然後將給定的函式映射到資料庫傳回的所有列。
let () =
let stmt = Ezsqlite.prepare db
"SELECT name, firstname, age from employees"
in
let print_employee row =
可以使用 Ezsqlite.text
、blob
、int64
、int
、double
函式來讀取個別欄位的值。
請注意,這不是型別安全的,因為您需要在此處為欄位提供正確的型別。
let name = Ezsqlite.text row 0
and firstname = Ezsqlite.text row 1
and age = Ezsqlite.int row 2
in
Printf.printf "name=%s, firstname=%s, age=%d\n"
name firstname age
in
Ezsqlite.iter stmt print_employee