我有一般可以插入数据的代码。我有一个记录列表在数据库中插入记录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