如何删除 Access 中的表(如果存在)

发布于 2024-11-04 12:00:02 字数 132 浏览 0 评论 0原文

我使用 C# 并访问数据库。
mysql中有一条删除表的语句,如下所示:

drop table if exists t_table

那么你知道Access中也有类似的语句吗?

I use C# and access db.
There is a statement in mysql for dropping table like below:

drop table if exists t_table

So do you know the similar statement for Access?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

美胚控场 2024-11-11 12:00:02

我不知道Access中有这样的SQL语句。
但是,您可以执行以下操作之一:

  • 尝试删除表而不检查是否存在,捕获异常(如果未找到表,它应该有特定的代码)并忽略它。 尝试删除表

  • 尝试检查 Access 隐藏表 MSysObjects 如果表存在(但是使用 ADO,默认情况下没有权限)

  • 使用如下代码(不好的事情:删除表不会返回受影响的记录):

    using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.JET.OLEDB.4.0;data source=c:\myDatabase.mdb"))
    {
        conn.Open();
    
        字符串 tableToDelete = "myTable"; //表名
        布尔表存在= false;
    
        DataTable dt = conn.GetSchema("表");
    
        foreach(dt.Rows 中的 DataRow 行)
        {
            if (row["TABLE_NAME"].ToString() == tableToDelete)
            {
                表存在=真;
                休息;
            }
        }
    
        如果(表存在)
        {
            使用 (OleDbCommand cmd = new OleDbCommand(string.Format("DROP TABLE {0}", tableToDelete), conn))
            {
                cmd.ExecuteNonQuery();
                MessageBox.Show("表格已删除");
            }
        }
        别的
            MessageBox.Show(string.Format("表{0}不存在", tableToDelete));
    }
    

I don't know about SQL statment like this in Access.
You can, howewer, do one of the following:

  • Try to drope table without checking if exists, catching exception (it should have specific code if no table was found) and ignoring it.

  • Try to check in Access hidden table MSysObjects if table exists (with ADO however, it has no permission by default)

  • Use a code like the one below (bad thing: dropping table do not return records affected):

    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));
    }
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文