Как мне перечислить имена таблиц в базе данных? - PullRequest
2 голосов
/ 21 сентября 2010

У нас есть база данных Oracle 8i, к которой у меня есть доступ только для чтения. Мы используем ODBC и MS Access для чтения данных из этой базы данных, поскольку у нас нет программного обеспечения Oracle Client. Это отлично работает. Я использую ADO.NET с ASP.NET. Теперь я хочу отобразить список всех таблиц, которые я вижу в MS Access через ODBC. Я пробовал это с подключением ODBC в C #. Я пробовал следующие запросы, чтобы получить список таблиц, которые не работали.

  1. выбрать имя_таблицы из dba_tables;
  2. выбрать имя таблицы из всех таблиц;
  3. выберите имя на вкладке;

Пожалуйста, помогите.

Спасибо за ответ. Я попробовал их без удачи. Все, что я хочу видеть, это тот же список таблиц, которые доступны в MS Access, когда я использую 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;
            }
        }

Это дает мне список таблиц, который не содержит все таблицы, которые я вижу, когда я связываю таблицы в MS Access с использованием ODBC.

Ответы [ 4 ]

3 голосов
/ 21 сентября 2010

Это работает:

select table_name from tabs;
2 голосов
/ 28 марта 2014

Поскольку вы используете ADO.NET, я бы предложил использовать OdbcConnection.GetSchema .Этот метод возвращает DataTable, содержащий информацию о схеме вашей базы данных.

Из этого ответа , это может работать для вас:

OdbcConnection.GetSchema(«Таблицы»)

2 голосов
/ 21 сентября 2010

Вы можете попробовать select table_name from user_tables

или

select object_name from USER_objects where object_type='TABLE'

1 голос
/ 21 сентября 2010

Попробуйте:

SELECT owner, table_name
  FROM dba_tables

Взято из Получить список всех таблиц в Oracle?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...