HDBC-ODBC under Windows

From HaskellWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

A brief description of how to get HDBC-ODBC working under windows, for connecting to things like MS SQL server.

Install

  • Ensure your path contains the ghc bin directory:
    • Right click on My Computer, select Properties -> Advanced -> Environment variables -> change the variable 'Path'
  • Download and install MDAC/ODBC Software Development Kit, from a link on this page:
    http://www.microsoft.com/en-us/download/details.aspx?id=5793
  • Download and unpack the most recent versions of hdbc and hdbc-odbc hackage.haskell.org
  • Follow the README instructions for installing hdbc
  • Follow the README instructions for installing hdbc-odbc, with these changes:
    • The include-dirs line should be changed to:
      include-dirs: . "C:\\Program Files\\Microsoft Data Access SDK 2.8\\Libs\\x86"
    • Do the following at a command prompt, with the hdbc-odbc directory being current directory:
          ghc --make -o setup Setup.hs
          setup configure
          setup build
          setup install

Alternatively, as of the latest hackage build (HDBC-odbc-2.2.3.2) performing a cabal build works using:

          cabal update
          cabal install HDBC-odbc

You may need other ODBC drivers, but often they will be installed already on a development box that has the database server installed.

Test

You can test it from a ghci prompt (obviously you'll need to change the connection string and query):

Prelude> :m Database.HDBC
Prelude Database.HDBC> :m + Database.HDBC.ODBC
Prelude Database.HDBC Database.HDBC.ODBC> let connectionString =  "Driver={SQL Server};Server=myserver;Database=mydatabase;Trusted_Connection=yes;"
Prelude Database.HDBC Database.HDBC.ODBC> let ioconn = connectODBC connectionString
Prelude Database.HDBC Database.HDBC.ODBC> do { conn <- ioconn; vals <- quickQuery conn "SELECT TOP 10 * FROM mytable;" []; print vals }
[[SqlString "1",SqlString "Copy",...