Haskell SQLite3全部查询

时间:2018-11-22 17:50:46

标签: sqlite haskell

想要确定表格的大小(长度),以避免用户输入已经存在的增量ID(注意:将所有Haskell书籍都弄湿了)。有id, task, date_in, date_out的表格,需要计算数字ID。使用此功能:

checkUniqueID = do
  conn <- open "taglist.db"
  len <- query conn "SELECT * FROM task;" (Only xxx) :: IO [id]
  let showLength = length $ len
  print showLength
  close conn
  return ()

但是:省略'Only'会导致ghci提及的参数太少,但是我真的不知道在xxx处输入什么。不幸的是,所有Haskell文档都是如此分散,因为它是一种很酷的语言。 谢谢大家!

1 个答案:

答案 0 :(得分:0)

我对这些库并不十分熟悉。我检查文档 的Database.PostgreSQL.Simple 并发现,如果查询中没有参数,则可以使用query_并省略参数元组。文档开头的示例很有帮助。

话说回来,您的方法看起来不对。您从数据库中提取整个表只是为了计数条目。这很浪费:您应该使用select count(*) from ..之类的东西,以便仅查询长度。

这可能有效:(再次,我从未使用过该库)

[Only len] <- query_ conn "select count(*) from task" :: IO [Only Int]