Jan*_*man 10 c# odbc quickbooks quickbooks-online qodbc
我正在使用驱动程序的试用版,并配置了名为QuickBooks Online Data和QuickBooks 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# 控制台应用程序中执行子查询,但遇到了同样的问题。
有人请告诉我解决此问题的可能解决方案吗?
希望这有帮助:
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语句,以避免这种不受支持的语法。如果我知道实际的请求是什么,我可以提供帮助。