You can get the list of table names from a database using the SQLTables function.
bool CMyDatabase::GetSheetNames(CStringArray& arr) const
{
ASSERT(IsOpen());
SQLHSTMT hst = NULL;
SQLRETURN nSqlResult = ::SQLAllocHandle(SQL_HANDLE_STMT, m_hdbc, &hst);
if (!SQL_SUCCEEDED(nSqlResult))
TRACE1("Error %d in SQLAllocHandle()\n", nSqlResult);
else
{
nSqlResult = ::SQLTables(hst, NULL, 0, NULL, 0, NULL, 0, NULL, 0);
if (!SQL_SUCCEEDED(nSqlResult))
TRACE1("Error %d in SQLTables()\n", nSqlResult);
else
{
SQLTCHAR szName[64];
SQLINTEGER cbName;
::SQLBindCol(hst, 3, SQL_C_TCHAR, szName, sizeof(szName), &cbName);
while ((nSqlResult = ::SQLFetch(hst)) != SQL_NO_DATA)
{
if (SQL_SUCCEEDED(nSqlResult))
arr.Add(szName);
else {
TRACE1("Error %d fetching SQLTables\n", nSqlResult);
break;
}
}
}
::SQLFreeHandle(SQL_HANDLE_STMT, hst);
}
return SQL_NO_DATA == nSqlResult && arr.GetSize();
}