You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Ignite ODBC与ADODB Recordset数据获取异常问题求助

问题

在Windows 10系统下,使用32位Microsoft Access 2016及默认配置的32位Apache Ignite ODBC驱动,从Apache Ignite内存数据库获取记录。导入为链接表的方式无法生效,改用ADODB类尝试:Connection.Open与Recordset.Open执行成功,能在Recordset中看到示例表CITY的所有列(ID和NAME),但调用MoveFirst或MoveNext获取第一条记录时,出现错误提示“specified attribute is not supported”。尝试设置CursorLocation=adUseClient后,错误提示变为“wrong parameter”。当前默认Provider为MSDASQL.1,请问该Provider是否正确?有没有办法使用ADODB成功获取记录?

代码如下:

Public Sub QueryIgnite()

Dim ADOrs As ADODB.Recordset
Dim ADOcon As ADODB.Connection

Set ADOcon = New ADODB.Connection
ADOcon.ConnectionString = "DSN=Apache-Ignite-DSN"
'ADOcon.CursorLocation = adUseClient
ADOcon.Open
Set ADOrs = New ADODB.Recordset
ADOrs.Open "select * from city", ADOcon, adOpenForwardOnly
ADOrs.MoveNext
Debug.Print ADOrs.Fields("NAME")
ADOrs.Close
ADOcon.Close
End Sub
解决方案

关于Provider的正确性

MSDASQL.1(ODBC驱动程序的OLE DB提供者)本身是正确的——通过ODBC DSN连接Apache Ignite时,MSDASQL作为标准桥接提供者是合理选择,问题大概率出在游标类型、锁类型的参数搭配,或者驱动对ADODB参数的支持限制上。

具体修改方案

  • 调整Recordset.Open参数组合
    Apache Ignite ODBC驱动对部分游标、锁类型支持有限,建议显式指定adOpenStatic游标类型与adLockReadOnly锁类型,修改后的代码如下:

    Public Sub QueryIgnite()
        Dim ADOrs As ADODB.Recordset
        Dim ADOcon As ADODB.Connection
    
        Set ADOcon = New ADODB.Connection
        ADOcon.ConnectionString = "DSN=Apache-Ignite-DSN"
        ' 保持默认服务器端游标,避免客户端游标兼容性问题
        ADOcon.Open
        
        Set ADOrs = New ADODB.Recordset
        ' 显式指定兼容的游标与锁类型
        ADOrs.Open "select * from city", ADOcon, adOpenStatic, adLockReadOnly
        
        If Not ADOrs.EOF Then
            ' 遍历所有记录的示例
            Do While Not ADOrs.EOF
                Debug.Print ADOrs.Fields("NAME")
                ADOrs.MoveNext
            Loop
        End If
        
        ADOrs.Close
        ADOcon.Close
        Set ADOrs = Nothing
        Set ADOcon = Nothing
    End Sub
    
  • 检查ODBC驱动配置
    打开32位ODBC数据源管理器(C:\Windows\SysWOW64\odbcad32.exe):

    • 验证Ignite节点地址、端口等配置是否正确
    • 确认驱动为最新32位版本,旧版本可能存在ADODB兼容性缺陷
    • 在管理器中测试连接并执行查询,排除驱动本身的连接故障
  • 禁用客户端游标
    设置adUseClient后出现参数错误,说明Ignite ODBC驱动不支持客户端游标模式,需保持默认的服务器端游标(adUseServer)。

  • 限制结果集大小(可选)
    若表中数据量较大,可添加LIMIT语句缩小返回范围,测试是否能正常获取记录:

    ADOrs.Open "select * from city LIMIT 10", ADOcon, adOpenStatic, adLockReadOnly
    

内容的提问来源于stack exchange,提问作者Guido

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:55:21