[英]How do I list the table names in a database?
我們有一個Oracle 8i數據庫,我只有讀取權限。 我們使用ODBC和MS Access從該數據庫讀取數據,因為我們沒有Oracle客戶端軟件。 這很好用。 我在ASP.NET中使用ADO.NET。 現在我想顯示我通過ODBC在MS Access中看到的所有表的列表。 我在C#中嘗試使用ODBC連接。 我嘗試了以下查詢來獲取表的列表,這些表不起作用。
這是我用來實現這個功能的功能,它實際上並不像我希望的那樣。
public static ArrayList GetODBCTablesList()
{
try
{
OdbcConnection DbConnection = new OdbcConnection("DSN=mydsn;UID=user1;PWD=pwd1;");
DbConnection.Open();
OdbcCommand DbCommand = DbConnection.CreateCommand();
DbCommand.CommandText = "select table_name from all_tables";
OdbcDataReader DbReader = DbCommand.ExecuteReader();
if (DbReader != null)
{
ArrayList TableList = new ArrayList();
while (DbReader.Read())
{
TableList.Add(DbReader.GetString(0));
}
DbReader.Close();
DbCommand.Dispose();
DbConnection.Close();
TableList.Sort();
TableList.TrimToSize();
return TableList;
}
DbCommand.Dispose();
DbConnection.Close();
return null;
}
catch (Exception ex)
{
LogHandler.WriteLogMessage(ex.GetBaseException().ToString(), true);
return null;
}
}
這給了我一個表的列表,它不包含我在使用ODBC鏈接MS Access中的表時看到的所有表。
這有效:
select table_name from tabs;
由於您使用的是ADO.NET,我建議使用OdbcConnection.GetSchema 。 此方法返回一個DataTable
其中包含有關數據庫架構的信息。
從這個答案 ,這可能對你有用:
OdbcConnection.GetSchema( “表”)
您可以嘗試select table_name from user_tables
要么
select object_name from USER_objects where object_type='TABLE'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.