如果你只是想获取access的表名,你可以使用access的系统视图,MSysObjects中的name来获取。
如果你使用odbc api实现,可以如下
//////////////////////////////////////////////////////////
//Get Tables Using ODBC API
CString strType = _T("'TABLE'"); HSTMT hStmt;
UCHAR   szName[256];
SDWORD  cbName;
CString strTableNames; int nResult = CODE_OK;
TRY
{
SQLAllocStmt(m_db.m_hdbc,&hStmt);
nResult = SQLTables(hStmt,
      NULL,SQL_NTS,
    NULL,SQL_NTS,
    NULL,SQL_NTS,
   (UCHAR FAR *)(const char*)strType,SQL_NTS); if (arrstrTables.GetSize() != 0)
arrstrTables.RemoveAll();

while(1){

nResult = SQLFetch(hStmt);
if(nResult == SQL_NO_DATA_FOUND)
break;
nResult = SQLGetData(hStmt, 3, SQL_C_CHAR, szName,    
  NUM_TABLE_NAME_LENGTH, &cbName);

strTableNames.Format("%s",szName);
arrstrTables.Add(strTableNames);
}
SQLFreeStmt(hStmt,SQL_CLOSE);
}
CATCH_ALL(pException)
{
if (CODE_OK == nResult)
nResult = CODE_Err_DB_GetTableName;

SQLFreeStmt(hStmt,SQL_CLOSE);
vCloseDB();
}
END_CATCH_ALL

解决方案 »

  1.   

    取ACCESS的表名,可以通過ADOX來取得Dim c As ADOX.Catalog
    Dim p As ADODB.ConnectionDim idx As Integer
      Set p = New ADODB.Connection
      p.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db7.mdb;Persist Security Info=False"
      Set c = New ADOX.Catalog
      Set c.ActiveConnection = p
      
      For idx = 0 To c.Tables.Count - 1
           Debug.Print c.Tables.Item(idx).Name
      Next idx
      

  2.   

    Oracle下:
    select table_name from sys.all_tables;
      

  3.   

    Public Sub OpenSchemaX()   Dim cnn1 As ADODB.Connection
       Dim rstSchema As ADODB.Recordset
       Dim strCnn As String
          
       Set cnn1 = New ADODB.Connection
          strCnn = "Provider=sqloledb;" & _
          "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
       cnn1.Open strCnn
          
       Set rstSchema = cnn1.OpenSchema(adSchemaTables)
       
       Do Until rstSchema.EOF
          Debug.Print "Table name: " & _
             rstSchema!TABLE_NAME & vbCr & _
             "Table type: " & rstSchema!TABLE_TYPE & vbCr
          rstSchema.MoveNext
       Loop
       rstSchema.Close
       
       cnn1.Close
       
    End Sub