Haskell安装mysql(mac环境)

mkdir mysql-test

cd mysql-test

cabal sandbox init

到https://www.stackage.org/ 下载对(zui)应(xin)的cabal.config,放在mysql-test文件夹中

以下4个安装要一个个装,不然会出现卡死的情况
cabal install alex

cabal install happy

cabal install c2hs

cabal install haddock  

下载pcre
http://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.bz2/download
解压之后用sudo 执行./configure ,会在目录中出现pcre.h

安装pcre-light
cabal install --extra-include-dirs=/Users/brant/program/lib/pcre-8.37 pcre-light

为了安装mysql,需要创建一个软链,否则就会出现找不到/libmysqlclient.18.dylib的错误
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

(2015.10.2 更新)

http://mac.pcbeta.com/thread-164373-1-1.html

因为新的Ei Capitan禁止修改内核,所以链接地址由/usr/lib修改至/usr/local/lib




安装mysql
cabal install --extra-prog-path=/usr/local/mysql-5.6.22-osx10.8-x86_64/bin mysql-0.1.1.8

安装mysql-simple
cabal install --extra-prog-path=/usr/local/mysql-5.6.22-osx10.8-x86_64 mysql-simplee-0.2.2.5

执行hs
ghci -no-user-package-db -package-db .cabal-sandbox/x86_64-osx-ghc-7.10.2-packages.conf.d/ test.hs

或者ghci  -package-db .cabal-sandbox/x86_64-osx-ghc-7.10.2-packages.conf.d/ test.hs

或者 cabal run/cabal build


{-# LANGUAGE BangPatterns, DeriveDataTypeable, OverloadedStrings #-}


import MySQL
import Database.MySQL.Simple
import Database.MySQL.Simple.QueryResults
import Database.MySQL.Simple.Result
import Control.Monad.Reader
import Database.MySQL.Simple.Types (Binary(..), In(..), Only(..), Query(..))

main :: IO ()
main = do
--  conn <- connect defaultConnectInfo
  conn <- connect defaultConnectInfo {connectHost = "127.0.0.1", connectPort = 3306, connectUser = "username", connectPassword = "password", connectDatabase = "report"}
  users <- query conn "select name,age from users where age > ?" (Only (20::Int))
  _     <- putStrLn $ show $ map name users
  return ()


data User = User { name :: String, age :: Int,sex :: String } deriving Show

instance QueryResults User where

    convertResults [fa] [va] = User { name = convert fa va, age = 10,sex="unknown"}

    convertResults [fa,fb] [va,vb] = User { name = a, age = b , sex = "female" }
        where   a = convert fa va
                b = convert fb vb
    convertResults [fa,fb,fc] [va,vb,vc] = User{name = a, age =b ,sex =c}
        where   a = convert fa va
                b = convert fb vb
                c = convert fc vc

    convertResults fs vs  = convertError fs vs 2




selectUserAllInformation :: SqlQuery [User]
selectUserAllInformation = sqlQuery_ "select sex, age,name from users"


selectUserByFemale :: SqlQuery [User]
selectUserByFemale = sqlQuery_ "select name,age from users where sex='female'"
--selectUserByFemale = query c "select name,age from users where age > ?" ('Only' (42:Int))







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值