在 QuickBooks 在线 ODBC 驱动程序连接中执行子查询时连接被强制关闭

Jan*_*man 10 c# odbc quickbooks quickbooks-online qodbc

我正在使用驱动程序的试用版,并配置了名为QuickBooks Online DataQuickBooks Online Data QRemoteQuickBooks Online ODBC (QODBC)的 DSN

我已使用测试工具确保连接,并且能够SQL使用上述测试工具和C#代码正确执行查询。

请找到一些运行良好的示例查询:

select * from Account

select account.TimeCreated,account.TimeModified, TaxRate.ListID from account
left outer join TaxRate on account.ListID = TaxRate.ListID

select AVG(RateValue),SUM(RateValue) from TaxRate

select Top 5 ListID,RateValue from TaxRate
Run Code Online (Sandbox Code Playgroud)

在尝试在测试工具中执行子查询时,我面临以下问题。

使用的子查询:

select ListID from (select ListID, TimeCreated from Account)
Run Code Online (Sandbox Code Playgroud)

异常:错误 [42S00] ExecDirect 数据包标头 - 收到错误:10054,现有连接被远程主机强制关闭。如果远程主机上的对等应用程序突然停止、主机重新启动、主机或远程网络接口被禁用,或者远程主机使用了“硬关闭”,通常会导致这种情况

错误 [42S00] 错误无效套接字。套接字已关闭,或者套接字引用无效。欲了解更多信息,请访问:qodbc.com/links/invalidsocket

我已经尝试了错误消息中建议的解决方案,但问题仍然没有解决。

此外,还尝试在 C# 控制台应用程序中执行子查询,但遇到了同样的问题。

有人请告诉我解决此问题的可能解决方案吗?

use*_*016 0

希望这有帮助:

select tmp.ListID from (select ListID, TimeCreated from account) as tmp
Run Code Online (Sandbox Code Playgroud)

(不确定 QODBC 语法,所以我选择了普通 SQL)

编辑:

也可能是 QODBC 系统不支持完整的 SQL 语法,因此嵌套select将失败(确实会出现非常奇怪的错误消息 - 但众所周知,程序员不擅长编写有用的错误消息)。您可以使用最简单的嵌套快速测试select

select * from (select 1)
Run Code Online (Sandbox Code Playgroud)

或者:

select * from (select 1) as tmp
Run Code Online (Sandbox Code Playgroud)

如果两者都失败,则意味着请求另一端的 SQL 解释器不合格。解决方法是“重新表述”您的select语句,以避免这种不受支持的语法。如果我知道实际的请求是什么,我可以提供帮助。