1

我正在使用 adodbapi 包连接到我桌面上的本地 SQL Server Compact 数据库(.sdf 文件),并且连接器无法正常工作,除非将光标设置为“服务器端”。为什么会这样?

查看 adodbapi 源代码后,我可以看到光标默认设置为客户端(从 2.3.0 版开始)。但是,我看不到程序使用光标位置的位置或将光标位置传递给连接提供程序的位置。这使得很难确定为什么我需要一个服务器端光标位置才能使我的连接正常运行。当 SQL Server 数据库位于本地时,我查看了ADO 客户端与服务器端游标之间的区别?但似乎表名(和其他尝试查询)将成为静态记录集的一部分。

故障的一个例子是:

 connectionString =  """ 
                    Provider = Microsoft.SQLSERVER.CE.OLEDB.4.0;
                    Data Source = results.sdf;
                    SSCE:Max Database Size = 4000
                    """     
    dbConnection = ado.connect(connectionString)
    db.Connection.ger_table_names()

这给出了错误

com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft SQL Server Compact OLE DB Provider', 'Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.', None, 0, -2147217887), None)

但是,包括以下内容会输出正确的表名。

dbConnection.connector.CursorLocation = 2

有人知道幕后解释吗?

4

1 回答 1

1

如果您想尝试一下,除了 OLEDB.4.0 之外,还有 OLEDB.3.5。

于 2020-11-06T11:45:53.573 回答