如何使用C ++

时间:2016-03-23 13:07:12

标签: c++ excel odbc jdbc-odbc

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

虽然这只是在你做

时才有用
select top 1 * from (table name **SQLTables** found)

或者,如果要从通用SQL中查找列名。

您可以查找所有列的另一种方法是使用 SQLColumns()函数。这类似于 SQLTables()(相同的搜索原则),并使用结果重新生成结果集。在此处找到:https://docs.microsoft.com/en-gb/sql/odbc/reference/syntax/sqlcolumns-function

答案 1 :(得分:0)

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

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

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

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

同样,还要为SQLTables方法返回模式和表名。

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