如何使用 C++ 使用 ODBC 驱动程序 API 将数据绑定到 SQLBindCol

问题描述 投票:0回答:2

我正在尝试使用 C++ 创建一个适用于 Windows 环境(如 PostgreSQL、Simba、Firebird 等)的自定义 ODBC 驱动程序,因为 ODBC API 默认情况下有多个 ODBC API 方法。

我使用 DSN 建立了连接,并且我能够使用 SQLExecuteDirect 方法执行 SQL 查询。

但是,在将 Excel 与我们的 ODBC 驱动程序连接时,我无法将表列表绑定到 Microsoft 查询向导。

SQLTables()SQLBindColumn()SQLFetch() 方法用于检索此处的表名列表。使用 SQLBindColumn 方法绑定数据。

但是我对如何检索表名并将它们绑定到 Excel 感到困惑?

excel odbc jdbc-odbc
2个回答
0
投票

调用SQLExecDirect()SQLPrepare()后,您可以调用SQLDescribeCol()SQLDescribeCol() 将返回您应该需要的所有列信息。

您可以访问 Microsoft 的网站:https://learn.microsoft.com/en-gb/sql/odbc/reference/syntax/sqldescribecol-function

尽管这仅在您正在做时才有用

select top 1 * from (table name **SQLTables** found)

或者如果您想从通用 SQL 中查找列名。


查找所有列的另一种方法是使用 SQLColumns() 函数。这类似于 SQLTables() (相同的搜索原理)并返回带有结果的结果集。在这里找到:https://learn.microsoft.com/en-gb/sql/odbc/reference/syntax/sqlcolumns-function


0
投票

Excel 应用程序将在执行任何查询之前加载所有架构信息。

在这种情况下,将使用目录、模式和表名称等属性调用 SQLTables 方法。基于称为架构信息的属性,必须在 SQLFetch 方法中返回。

供参考: https://learn.microsoft.com/en-us/sql/odbc/reference/syntax/sqltables-function

如果使用目录名称属性调用 SQLTables 方法,则必须使用 SQLBindCol 方法返回的数据地址在 SQLFetch 方法中绑定目录名称。

同样,SQLTables 方法也将返回模式和表名称。

有关如何绑定列模式信息的更多信息,请参阅上述链接下的评论部分。

© www.soinside.com 2019 - 2024. All rights reserved.