$ cabal install hdbc-sqlite3
installed hdbc-sqlite3-2.3
.3.1
prelude> :m database.hdbc database.hdbc
.sqlite3
prelude database.hdbc database.hdbc
.sqlite3>
prelude
database.hdbc
database.hdbc.sqlite3> conn <- connectsqlite3 "test1.db"
-- 連線或建立資料庫
prelude
database.hdbc
database.hdbc.sqlite3> run conn "create table test (id integer not null, desc varchar(80))" -- 建表
0prelude
database.hdbc
database.hdbc.sqlite3> run conn "insert into test (id) values (0)" -- 插入記錄
1prelude
database.hdbc
database.hdbc.sqlite3> commit conn
prelude
database.hdbc
database.hdbc.sqlite3> run conn "insert into test values (?, ?)" [tosql 0, tosql "zero"] -- 插入記錄,使用引數
1prelude
database.hdbc
database.hdbc.sqlite3> commit conn
prelude
database.hdbc
database.hdbc.sqlite3> stmt <- prepare conn "insert into test values (?, ?)"
-- 插入記錄,使用語句
prelude
database.hdbc
database.hdbc.sqlite3> execute stmt [tosql 1, tosql "one"]
1prelude
database.hdbc
database.hdbc.sqlite3> execute stmt [tosql 2, tosql "two"]
1prelude
database.hdbc
database.hdbc.sqlite3> execute stmt [tosql 3, tosql "three"]
1prelude
database.hdbc
database.hdbc.sqlite3> execute stmt [tosql 4, sqlnull]
1prelude
database.hdbc
database.hdbc.sqlite3> commit conn
prelude
database.hdbc
database.hdbc.sqlite3> stmt <- prepare conn "insert into test values (?, ?)"
prelude
database.hdbc
database.hdbc.sqlite3> executemany stmt [[tosql 5, tosql "five's nice"], [tosql 6, sqlnull]] -- 插入多條記錄,使用語句
prelude
database.hdbc
database.hdbc.sqlite3> commit conn
prelude
database.hdbc
database.hdbc.sqlite3> quickquery' conn "select * from test where id < 2" -- 查詢記錄
[[sqlint64
0,sqlnull],[sqlint64
0,sqlbytestring
"zero"],[sqlint64
1,sqlbytestring
"one"]]
prelude
database.hdbc
database.hdbc.sqlite3> quickquery' conn "select id, desc from test where id <= ? order by id, desc" [tosql 2] -- 查詢記錄,使用引數
[[sqlint64
0,sqlnull],[sqlint64
0,sqlbytestring
"zero"],[sqlint64
1,sqlbytestring
"one"],[sqlint64
2,sqlbytestring
"two"]]
prelude
database.hdbc
database.hdbc.sqlite3> stmt <- prepare conn "select * from test where id < 2"
-- 查詢記錄
prelude
database.hdbc
database.hdbc.sqlite3> execute stmt
0prelude
database.hdbc
database.hdbc.sqlite3> results <- fetchallrowsal stmt -- 惰性讀取
prelude
database.hdbc
database.hdbc.sqlite3> mapm_ print results
[("id",sqlint64
0),("desc",sqlnull)]
[("id",sqlint64
0),("desc",sqlbytestring
"zero")]
[("id",sqlint64
1),("desc",sqlbytestring
"one")]
["test"]
prelude database.hdbc database.hdbc.sqlite3> proxiedclientname conn
"sqlite3"
prelude database.hdbc database.hdbc.sqlite3> dbserverver conn
"3.19.3"
prelude database.hdbc database.hdbc.sqlite3> dbtransactionsupport conn
true
prelude database.hdbc database.hdbc.sqlite3> quickquery' conn "select * from test2"
*** exception: sqlerror
prelude database.hdbc database.hdbc.sqlite3> handlesqlerror $ quickquery' conn "select * from test2"
*** exception: user error (sql error: sqlerror )
prelude database.hdbc database.hdbc.sqlite3> disconnect conn
Haskell語言學習筆記(79)lambda演算
根據維基百科,lambda演算 英語 lambda calculus,calculus 是一套從數學邏輯中發展,以變數繫結和替換的規則,來研究函式如何抽象化定義 函式如何被應用以及遞迴的形式系統。lambda演算由 lambda 項的語言構成。基本的 lambda 項只包含以下三種 語法名稱 描述h...
Haskell學習筆記 Monads
monads 翻譯叫 單子 或者 乙個自函子上的么半群 好吧除了讓人費解沒有什麼用 同樣舉乙個書上的例子 data expr val int div expr expr eval expr maybe int eval val n pure n eval div x y pure safediv e...
Verilog HDL語言學習筆記
verilog hdl語言 verilog hdl 是一種硬體描述語言 hdl hardware discription language 是一種以文字形式來描述數字系統硬體的結構和行為的語言。用它可以表示邏輯電路圖 邏輯表示式,還可以表示數字邏輯系統所完成的邏輯功能。是由gateway desig...