[Haskell-cafe] Re: HDBC or HSQL

Isto Aho iahogsp at gmail.com
Wed Aug 1 14:06:55 EDT 2007


I'd like to store small matrices into a db. Number of rows and columns may
vary in a way not
known in advance. One might use a relation (matrixId, col, row, value) or
something like that
but if it is possible to put a matrix in one command into db, some queries
will be easier.
E.g., one relation can store several matrices and it would be easy to query,
how many
matrices are stored currently. With that above four tuple you can find out
the number of unique
matrixId's, too, but it is not as easy as with matrices.

Anyhow, now I'm not sure if I should stick with HSQL any more... Earlier
comments on this
thread made me think that maybe it would be a better idea to try to learn
enough HDBC.

This would be used in a server application. Is HAppS applicable here?

e.g. after some tweaking the following works with HSQL:

addRows = do
        dbh <- connect server database user_id passwd
        intoDB dbh ([555,111, 50, 1000]::[Int]) ([21.0,22.0,23.0,24.0
        intoDB dbh ([556,111, 50, 1000]::[Int]) ([21.0,22.0,23.0,24.0
        intoDB dbh ([]::[Int]) ([]::[Double])
        intoDB dbh i_lst d_lst =
                catchSql (do
                        let cmd = "INSERT INTO trial (intList, dList) VALUES
(" ++
                                toSqlValue i_lst ++ "," ++ toSqlValue d_lst
++ ")"
                        execute dbh cmd
                        (\e -> putStrLn $ "Problem: " ++ show e)

Similarly, queries can handle matrices and I like that it is now
possible to select those columns or rows from the stored matrix that
are needed.  E.g.

retrieveRecords2 :: Connection -> IO [[Double]]
retrieveRecords2 c = do
        -- query c "select dList[1:2] from trial" >>= collectRows getRow
        query c "select dList from trial" >>= collectRows getRow
                getRow :: Statement -> IO [Double]
                getRow stmt = do
                        lst   <- getFieldValue stmt "dList"
                        return lst
readTable2 = do
        dbh <- connect server database user_id passwd
        values <- retrieveRecords2 dbh
        putStrLn $ "dLists are : " ++ (show values)


2007/8/1, Alex Jacobson <alex at alexjacobson.com>:
> Out of curiosity, can I ask what you are actually trying to do?
> I am asking because I am trying to make HAppS a reasonable replacement
> for all contexts in which you would otherwise use an external relational
> database except those in which an external SQL database is a specific
> requirement.
> -Alex-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20070801/2e41235c/attachment.htm

More information about the Haskell-Cafe mailing list