The problem is, "fromSql x" doesn't know that type it should return. It's sure that it 
has to be of class "Convertible SqlValue", but nothing more. Could be String, or Int32, 
or something else.

What if you just omit the "show" function? fromSql seems to be able to convert 
almost anything to String.

Iain Barnett wrote:
Hi,

I'm trying to get to grips with HDBC and have the following problem. When I run a query that returns a result set, each row comes back as a [SqlValue]. Naively, I thought the following function would convert a [SqlValue] into a string, but instead I get the error below.
convrow2 :: [SqlValue] -> String     
convrow2 (x:xs) = foldl (\i j -> i ++ " | " ++ show j ) (show (fromSql x)) xs


Prelude> :l TasksSimple.lhs [1 of 1] Compiling Main ( TasksSimple.lhs, interpreted )

TasksSimple.lhs:126:65:
    No instance for (convertible-1.0.5:Data.Convertible.Base.Convertible
                       SqlValue a)
      arising from a use of `fromSql' at TasksSimple.lhs:126:65-73
    Possible fix:
      add an instance declaration for
      (convertible-1.0.5:Data.Convertible.Base.Convertible SqlValue a)
    In the first argument of `show', namely `(fromSql x)'
    In the second argument of `foldl', namely `(show (fromSql x))'
    In the expression:
        foldl (\ i j -> i ++ " | " ++ show j) (show (fromSql x)) xs
Failed, modules loaded: none.


I tried looking at how to add an instance declaration for convertible, but was 
stumped.


This code, however, works in GHCi. Would anyone know how to convert from [SqlValue] in a 
straightforward way without having to specify every field "by hand" ? I don't 
fancy doing this for each sql statement I need to run.

convrow1 :: [SqlValue] -> String     
convrow1 [tasksid,title,added] = show ( (fromSql tasksid)::Integer ) ++ " | " ++ fromSql title
                                                        ++ " | " ++
                                                        show ((fromSql 
added)::LocalTime)


Any help is much appreciated, especially as I haven't looked at any Haskell in 
a while and wasn't any good with it before!

Regards,
Iain

This is my set up:
GHC is 6.10.4
HDBC is HDBC-2.1.1, HDBC-2.2.2, HDBC-postgresql-2.1.0.0,HDBC-postgresql-2.2.0.0
Convertible is convertible-1.0.5, convertible-1.0.8
OSX 10.6_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to