2012-02-11 22 views
4

我正在尝试使用Haskell的Oracle数据库,并且遇到了这样的问题。 所以,有这个代码。 模块主要哪里使用HDBC连接到Haskell中的Oracle数据库

import Database.HDBC 
import Database.HDBC.ODBC 

main :: IO() 

main = do 
     let connectionString = "Driver={Microsoft ODBC for Oracle};Server=127.0.0.1;Uid=valera;Pwd=2562525;" 
     let ioconn = connectODBC connectionString 
     conn <- ioconn 
     vals <- quickQuery conn "SELECT * FROM PERSONS_TEST" [] 
     print vals 
     return() 

是不是很简单?但那不行。使用此连接字符串错误是

*** Exception: SqlError {seState = "[\"HY090\"]", seNativeError = -1, seErrorMsg = "sqlGetInfo SQL_TXN_CAPABLE: [\"0: [Microsoft][ODBC driver for Oracle]\\65533... 

然后65333重复多次。而与此

Provider=msdaora;Data Source=127.0.0.1;User Id=valera;Password=2562525; 

误差

*** Exception: SqlError {seState = "[\"IM002\"]", seNativeError = -1, seErrorMsg = "connectODBC/sqlDriverConnect: [\"0: [Microsoft][\\65533... 

又一次65333个重复,直到最后 我想,这个问题是在连接字符串,但我已经尝试了一大堆人(我已使用http://www.connectionstrings.com/

我在Windows 7 64位上使用Haskell Platform 2011.4.0.0,GHC 7.0.4,Oracle Database XE 11.2。安装了Microsoft MDAC SDK。

+0

您是否在管理工具中使用Odbc工具创建odbc连接? – 2012-02-11 13:20:18

+0

哦,我没有。也许我不完全理解ODBC的概念。我会尝试。 – Spo1ler 2012-02-11 13:40:41

回答

2

\ 65533等等是您的语言环境(RU?)中的ODBC驱动程序错误消息字符串的符号。我发现在英语语言环境系统中开发最好的方式,因此在英语语言中显示的ghci控制台中的错误消息可以被读取。

+0

是的,我的语言环境是俄语。 – Spo1ler 2012-02-11 18:16:35