如何使用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方法也要返回模式和表名。
有关如何绑定明智的架构信息的更多信息,请参阅上述链接下的注释部分。