Как удалить таблицу в Access, если существует - PullRequest
2 голосов
/ 01 мая 2011

Я использую C # и доступ к БД.
В mysql есть оператор для удаления таблицы, как показано ниже:

drop table if exists t_table

Так вы знаете подобное утверждение для Access?

1 Ответ

3 голосов
/ 01 мая 2011


Я не знаю, как это происходит в SQL-статистике в Access.
Вы можете, однако, выполнить одно из следующих действий:

  • Попробуйте сбросить таблицу безпроверка, если существует, перехват исключения (он должен иметь определенный код, если таблица не найдена) и игнорирование его.

  • Попробуйте проверить в Access скрытую таблицу MSysObjects, если таблица существует (однако с ADO она не имеет разрешения по умолчанию)

  • Использовать кодкак показано ниже (плохо: удаление таблицы не возвращает затронутые записи):

    using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.JET.OLEDB.4.0;data source=c:\myDatabase.mdb"))
    {
        conn.Open();
    
        string tableToDelete = "myTable";   //table name
        bool tableExists = false;
    
        DataTable dt = conn.GetSchema("tables");
    
        foreach (DataRow row in dt.Rows)
        {
            if (row["TABLE_NAME"].ToString() == tableToDelete)
            {
                tableExists = true;
                break;
            }
        }
    
        if (tableExists)
        {
            using (OleDbCommand cmd = new OleDbCommand(string.Format("DROP TABLE {0}", tableToDelete), conn))
            {
                cmd.ExecuteNonQuery();
                MessageBox.Show("Table deleted");
            }
        }
        else
            MessageBox.Show(string.Format("Table {0} not exists", tableToDelete));
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...