如果存在则删除表

时间:2018-04-04 16:32:48

标签: c# sql-server database

如果database.mdf中的表格存在,如何删除该表格?该表存在于数据库中,但我无法删除它并收到错误:

  

System.Data.SqlClient.SqlException:' Talise Company-a'''

附近的语法不正确

问题似乎是我的字符串symbolName,因为当我创建一个"测试"表和使用"测试"而不是字符串它工作正常

Screenshot

string symbolName = dt.Rows[1][0].ToString();

SqlConnection condb2 = new SqlConnection(strConnection);

condb2.Open();
SqlCommand cmd2 = new SqlCommand("IF EXISTS(SELECT * FROM ['" + symbolName + "']) DROP ['" + symbolName + "']", condb2);
cmd2.ExecuteNonQuery();

condb2.Close();

3 个答案:

答案 0 :(得分:3)

您应该使用DROP TABLE

 DROP TABLE  ['" + symbolName + "']"

你也可以使用

DROP TABLE  IF EXISTS 

避免无用的选择

https://docs.microsoft.com/it-it/sql/t-sql/statements/drop-table-transact-sql

 SqlCommand cmd2 = new SqlCommand("IF EXISTS(SELECT * FROM ['" + symbolName + 
        "']) DROP TABLE ['" + symbolName + "']", condb2);

或从SQL Server 2016 CTP3开始,您可以使用此功能

 SqlCommand cmd2 = new SqlCommand(" DROP TABLE ['" + symbolName + "']  IF EXISTS", condb2);

答案 1 :(得分:1)

IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID('TABLE_NAME') AND type IN ('U'))
    DROP TABLE TABLE_NAME

答案 2 :(得分:1)

你忘了在丢弃字后提到表格字。

 IF EXISTS(SELECT * FROM ['" + symbolName + "']) DROP Table ['" + symbolName + "']", condb2