使用mysql-haskell按列名获取MySQLValue

时间:2017-09-02 06:02:00

标签: mysql haskell

我正在使用mysql-haskell包。我想编写我的查询,然后按列名从行中获取每个值。但我把这些碎片放在一起很麻烦。

Here是我正在使用的查询功能。

queryStmt :: MySQLConn -> StmtID -> [MySQLValue] -> IO ([ColumnDef], InputStream [MySQLValue])

这是我目前的代码。

{-# LANGUAGE OverloadedStrings #-} 
{-# LANGUAGE ScopedTypeVariables #-}
module Main where

import Database.MySQL.Base
import Data.Binary.Get
import qualified System.IO.Streams as Streams
import Data.Word
import Data.Traversable

main :: IO ()
main = do
  conn <- connect defaultConnectInfo {ciUser = "ffxi_auction_house", ciDatabase = "darkstar" }
  s <- prepareStmt conn "SELECT itemid FROM item_armor WHERE name = ?"
  (def:defs, is) <- queryStmt conn s [MySQLText "moogle_suit"]
  armorStreams <- Streams.toList is
  armors <- forM armorStreams $ \(MySQLInt16U value:_) -> return ItemArmor { itemid = value }
  print armors

data ItemArmor = ItemArmor
  {
    itemid :: !Word16
  } deriving (Show)

querystmt返回数据矩阵列的列表。 这实际上有效,但我必须依赖于返回集的顺序。

有一个名为getTextField的函数我一直在看,但我无法弄清楚它是如何适合的。

getTextField :: ColumnDef -> Get MySQLValue

0 个答案:

没有答案