我如何访问查询中的数据[varcharintdate]?
data VarcharIntDate = VarcharIntDate {
vc :: Maybe String,
i :: Maybe Int,
d :: Maybe Date
} deriving (Show)
instance FromRow VarcharIntDate where
fromRow = VarcharIntDate <$> field <*> field <*> field
我了解如何打印它,但是我不能做很多其他事情,因为我不明白如何治疗'io [varcharintdate]'
print =<< ( query_ conn "select vc,i,d from varintdate" :: IO [VarcharIntDate] )
但是我想做的是从所有行返回的[varcharintdate]或'i'的第n行访问'd',因此我可以开始从查询中提取数据并开始使用它。
您实际上已经处理了IO [VarcharIntDate]
的结果。您将=<<
与print
一起使用。这相当于:
main = do -- or another function
result <- query_ conn "select vc,i,d from varintdate" :: IO [VarcharIntDate]
print result
您可以通过执行map
ping或访问该行的 n - the element of query_
的结果,例如:
p = 2 -- sample p
main = do
res <- query_ conn "select vc,i,d from varintdate" :: IO [VarcharIntDate]
print (map i res) -- print all i's
print (d (res!!p)) -- print d of the p-th row
因此,在这里我们可以使用 res!!p
访问 p
-th行,然后调用 d
getter以获取该行的d
。
如果要获取所有i
s,则可以使用map i
。