Re: [web-devel] [Haskell-cafe] [ANN] mysql-simple - your go-to package for talking to MySQL

On 21 June 2011 13:45, David Virebayre
The very first example didn't work for me : ------------------------ {-# LANGUAGE OverloadedStrings #-}
import Database.MySQL.Simple
hello = do conn <- connect defaultConnectInfo query conn "select 2 + 2"
Yeah, the first example is wrong. Indeed. Should be fixed. I forgot to tell Bryan about that. I noticed it was wrong when I first looked at it but it's still tripping people up. You can access the docs on a slightly earlier version: http://hackage.haskell.org/package/mysql-simple-0.2.2.0
Next I modified the simple example to call a stored procedure, it returns a resultset of 12 columns. Unfortunately, I realised that QueryResults instances are defined up to 10 elements only. However, the documentation shows how to define a QueryResults instance, so I created a datatype and tried to define the instance, and got stuck with an error:
Couldn't match expected type `PlateauSel' against inferred type `Int -> a' In the expression: convertError fs vs In the definition of `convertResults': convertResults fs vs = convertError fs vs In the instance declaration for `QueryResults PlateauSel'
Indeed, the documentation shows that convertError takes 3 parameters, and I gave, as per the example, only 2. But I'm not sure what to write for the 3rd parameter, the documentation doesn't help me here.
The doc specifies it here:
convertError :: [Field] -> [Maybe ByteString] -> Int -> a Throw a ConversionFailed exception, indicating a mismatch between the number of columns in the Field and row, and the number in the collection to be converted to.
So if you're making an instance for a type that takes ten items from the collection, then put 10. Could always make this clearer.
To try, I put 0, and the test compiled. However, I had a connection error number 1312, saying my procedure "can't return a result set in the given context". (The query I used works from the mysql command-line interface)
Ah, I wouldn't know about that, I haven't used the mysql version.
participants (1)
-
Christopher Done