我有一般可以插入數據的代碼。我有一個記錄列表在數據庫中插入記錄Haskell
let s = [HrefInfo {link =「introduction」,description =「Introduction」},HrefInfo {link =「introduction#about-this-tutorial」,description =「關於本教程「}]
現在我想在一個數據庫中插入記錄,其中鏈接將在一列中,描述將在另一列中。
module Main(main) where
import Database.HDBC.Sqlite3
import Database.HDBC
import Database.HDBC.Types
import Database.HDBC.SqlValue
import Data.Convertible.Base
type Link = [Char]
type Description = String
type HrefLinktDes = [HrefInfo]
data HrefInfo = HrefInfo { link :: Link
, description :: Description
} deriving (Eq, Show, Read)
createDB :: IO()
createDB = do {conn <- connectSqlite3 "ld.db";
run conn "CREATE TABLE ld (url TEXT, des TEXT)" [];
commit conn;}
storeMany :: [[String]] -> IO()
storeMany xs =
do conn <- connectSqlite3 "ld.db"
stmt <- prepare conn "INSERT INTO ld (url, des) VALUES (?,?)"
executeMany stmt $ map (map toSql) xs
commit conn
main = do storeMany [["a","b"],["c","d"],["e","f"]]
當我試圖打破記錄它給了我錯誤。誰能幫幫我嗎。謝謝。
是什麼錯誤消息? – bheklilr
問題是類型不一樣storeMany應該像storeMany :: HrefLinktDes - > IO()...但我不能正確使用'map'。 – Nusrat
你應該把它放在你的問題中,從代碼中不清楚你的問題是將'HrefLinktDes'轉換爲'[String]'。您還應該顯示「HrefLinktDes」數據類型的聲明。 – bheklilr