Real World Haskellにほぼ同じ例があります:
ghci> conn <- connectSqlite3 "test1.db"
ghci> stmt <- prepare conn "INSERT INTO test VALUES (?, ?)"
ghci> executeMany stmt [[toSql 5, toSql "five's nice"], [toSql 6, SqlNull]]
ghci> commit conn
ghci> disconnect conn
編集
あなたの特定のケースでは、これは HDBC の使用方法に関する質問ではなく、通常の Haskell データの 1 つy
をデータのリスト と組み合わせる方法に関する質問xs
です。このmap
関数は単一の関数を取り、それをリスト内のすべての要素に適用して、結果のリストを返します。シングルy
を関数に入れるmap
と、それをリストに追加して、リスト内のすべてのアイテムの結果を取得できます。例えば:
map (\x -> (x, "One Thing")) [1, 2, 3]
結果は次のとおりです。
[(1, "One Thing"), (2, "One Thing"), (3, "One Thing")]
y
urlId をソースを含むものと組み合わせるには、次のxs
ように記述できます。
map (\x -> [toSql x, toSql y]) xs
これにより、次のコード全体が得られます。
saveX :: [String] -> Int->IO ()
saveX [] y= return ()
sav xs y=
do conn <- connectSqlite3 "cw.db"
stmt <- prepare conn "INSERT INTO pic (src,urlId) VALUES (?,?)"
executeMany stmt (map (\x -> [toSql x, toSql y]) xs)
commit conn