如果你只是想获取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
如果你使用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
解决方案 »
- 求一SQL语句
- sql数据库已经完全建好,有没有方法给数据库重命名和改变其存放位置
- GO!
- 关于视图更新问题一问
- 求一段sql库存查询语句
- 关于日期格式
- 请问各位:如何为表的字段加入依次变化的值
- 我想在ASP网页中insert一行数据,其中id是自增的,如何在插入以后得到该条的ID
- 讨论sqlserver实时备份(讲的好单独开贴给分)
- 数据搜索问题,高手们帮下忙
- 复合文档中,包含了"存储"和"流",相当于文件系统中的"目录"和"文件","存储"用IStorage进行操作,"流"用IStream进行操作,但是这个IStorage在vc中是一个类,vb中如何来创建,引用
- 菜菜的问题,sql server中如何实现自动编号,就像access中的自动编号字段
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
select table_name from sys.all_tables;
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