How do I delete all tables in a database using SqlCommand?

孤人 提交于 2019-12-24 08:57:10

问题


Unlike the other posts about the task "delete all tables", this question is specifically about using SqlCommand to access the database.

A coworker is facing the problem that no matter how it attempts it, he can't delete all tables from a database via SqlCommand. He states that he can't perform such action as long as there is an active connection - the connection by the SqlCommand itself.

I believe this should be possible and easy, but I don't have much of a clue about databases so I came here to ask. It would be awesome if you could provide a short code example in C# (or any .NET language, for that matter).

If you require additional information, just leave a comment.


回答1:


You either need to issue a DROP DATABASE command - connect to the "master" database on the server in question, and then issue a

DROP DATABASE (your database)

command.

Something like:

using (SqlConnection con = new SqlConnection("server=yourserver;database=master;integrated security=SSPI"))
{
    using (SqlCommand cmd = new SqlCommand("DROP DATABASE (your database)", con))
    {
        try
        {
            con.Open();
            int returnValue = cmd.ExecuteNonQuery();
            con.Close();
        }
        catch (Exception exc)
        {
            string errorMsg = string.Format("{0}: {1}", exc.GetType().FullName, exc.Message);   
        }
    }
}

Or then you need to iterate over all tables - there's no single command to drop all tables at once. Also, when dropping tables, you might need to drop constraints and indexes first.

Dropping everything isn't exactly an easy job!




回答2:


If you want to delete the tables without dropping the database you can also use the following command:

exec sp_MSforeachtable 'DROP TABLE ?'

Beware that you have to disable/delete all Foreign Key Constraints first, or it will most likely fail.



来源:https://stackoverflow.com/questions/2599119/how-do-i-delete-all-tables-in-a-database-using-sqlcommand

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!