如何在数据库中列出表名?

时间:2010-09-21 15:50:35

标签: c# oracle ado.net

我们有一个Oracle 8i数据库,我只有读取权限。我们使用ODBC和MS Access从该数据库读取数据,因为我们没有Oracle客户端软件。这很好用。 我在ASP.NET中使用ADO.NET。现在我想显示我通过ODBC在MS Access中看到的所有表的列表。 我在C#中尝试使用ODBC连接。我尝试了以下查询来获取表的列表,这些表不起作用。

  1. 从dba_tables中选择table_name;
  2. 从all_tables中选择table_name;
  3. 从标签中选择tname;
  4. 请帮忙。

    感谢您的回复。我没试好就试过了。我想看到的是当我使用ODBC创建链接表时,MS Access中可用的表格列表相同。

    这是我用来实现这个功能的功能,它实际上并不像我希望的那样。

    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中的表时看到的所有表。

4 个答案:

答案 0 :(得分:3)

这有效:

select table_name from tabs;

答案 1 :(得分:2)

你可以试试  select table_name from user_tables

select object_name from USER_objects where object_type='TABLE'

答案 2 :(得分:2)

由于您使用的是ADO.NET,我建议您使用OdbcConnection.GetSchema。此方法返回DataTable,其中包含有关数据库架构的信息。

this answer开始,这可能适合您:

  

OdbcConnection.GetSchema("表&#34)

答案 3 :(得分:1)

尝试:

SELECT owner, table_name
  FROM dba_tables

取自Get list of all tables in Oracle?