首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HDBC-ODBC SQL Server在quickQuery之后需要提交

HDBC-ODBC SQL Server在quickQuery之后需要提交
EN

Stack Overflow用户
提问于 2012-12-19 21:37:05
回答 1查看 663关注 0票数 3

我将介绍使用ODBC连接到本地SQL Server的HDBC的第一步。

在连接上执行quickQuery之后,我无法close它。我需要先执行一个commit

这就是它应该是的样子吗?当我只执行查询时,为什么commit是必需的?

在GHCi上:

代码语言:javascript
复制
m + Database.HDBC Database.HDBC.ODBC
conn <- connectODBC "Driver={SQL Server};Server=thiagon\\sqlserver2012;Database=senior;UID=framework;PWD=framework;"
vals <- quickQuery conn "SELECT TOP 5 * FROM whatever;" []
print vals
commit conn
disconnect conn

如果我删除commit conn行,我会得到一个异常:

代码语言:javascript
复制
*** Exception: SqlError {seState = "[\"25000\"]", seNativeError = -1, seErrorMsg = "disconnect: [\"0: [Microsoft][ODBC SQL Server Driver]Estado de transa\\65533\\65533o inv\\65533lido\"]"}

消息是葡萄牙语,意思是“无效的交易状态”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-19 22:37:40

quickQuery可以修改该表。我认为API不会分析字符串本身,也不会检查数据库来查看表是否被修改。而且HDBC不支持自动提交。

您可以使用withTransaction,它将自动为您处理此细节。

编辑:尝试使用quickQuery的严格版本quickQuery'。在http://book.realworldhaskell.org/read/using-databases.html上的一个例子中(向下滚动到ch21/query.hs),他们在一个普通的SELECT语句后不需要commit,但他们使用的是quickQuery'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13953598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档