計算機科学のブログ

実践Haskell のデータベースの使用 データの作成:ユーザーの挿入とツールの貸し出し SQLite、executeコマンド

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(実践Haskell)、LESSON 41(Haskellでのデータベースの使用)、41.4(データの作成:ユーザーの挿入とツールの貸し出し)、データベースに新しいユーザーを追加するのクイックチェック 41-2の解答を求めてみる。

コード

{-# LANGUAGE OverloadedStrings #-}
import Database.SQLite.Simple

withConn :: String -> (Connection -> IO ()) -> IO ()
withConn dbName action = do
    conn <- open dbName
    action conn
    close conn

addUser :: String -> IO ()
addUser userName =
    withConn "tools.db"
             (\conn -> do
                 execute conn
                         "INSERT INTO users (username) VALUES (?)"
                         (Only userName)
                 print "user added")

main :: IO ()
main = do
    addUser "haskell"

入出力結果(Terminal, Zsh)

% runghc sample02.hs
"user added"
% sqlite3 tools.db 
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
sqlite> select * from users;
1|willkurt
2|haskell
sqlite> .quit
%