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

我试图创build一个自定义的ODBC驱动程序使用C ++的Windows环境(如PostgreSQL,Simba,火鸟等),因为ODBC API默认情况下有多个ODBC API方法。

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

但是,将Excel与我们的ODBC驱动程序连接时,我无法将表列表绑定到Microsoft查询向导。 在这里输入图像描述

这里使用SQLTables() , SQLBindColumn()和SQLFetch()方法来检索表名列表。 数据使用SQLBindColumn方法绑定。

但我很困惑如何检索表名并将其绑定到Excel?

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

你可以在这里访问微软的网站: https : //docs.microsoft.com/en-gb/sql/odbc/reference/syntax/sqldescribecolfunction

虽然这只是有用的,如果你正在做一个

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

或者如果你想从一个通用的SQL中find列名。


另一种方法可以查找所有列是使用SQLColumns()函数。 这与SQLTables() (相同的search原理)类似,并返回结果集的结果。 在这里find: https : //docs.microsoft.com/en-gb/sql/odbc/reference/syntax/sqlcolumns-function

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

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

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

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

同样,对于SQLTables方法也要返回模式和表名。

有关如何绑定明智的架构信息的更多信息,请参阅上述链接下的注释部分。