gpt4 book ai didi

haskell - HDBC-ODBC SQL Server 需要在快速查询后提交

转载 作者:行者123 更新时间:2023-12-02 18:39:51 25 4
gpt4 key购买 nike

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

在连接上执行quickQuery后,我无法关闭它。我需要先执行提交

这是应该的方式吗?当我只执行查询时,为什么需要commit

关于 GHCi:

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 行,则会出现异常:

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

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

最佳答案

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

您可以使用withTransaction,它会自动为您处理此详细信息。

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

关于haskell - HDBC-ODBC SQL Server 需要在快速查询后提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com