SQL Server:使用 SQL 参数删除表

Posted

技术标签:

【中文标题】SQL Server:使用 SQL 参数删除表【英文标题】:SQL Server : drop table with SQL parameters 【发布时间】:2015-03-12 19:18:36 【问题描述】:

我正在尝试使用SqlParameters 删除一个表。我有这个代码。

dbCon.Open();
DataRowView d= (DataRowView) cmbTabele.Items[cmbTabele.SelectedIndex];
string name = (d["table_name"]as string);

SqlCommand com=new SqlCommand("drop table @nume ", dbCon);
com.Parameters.Clear();
SqlParameter param = new SqlParameter("@nume", name);
com.Parameters.Add(param);

com.ExecuteNonQuery();   // ERROR HERE
dbCon.Close();

我收到此错误:

“@nume”附近的语法不正确。

但是当我这样做时

SqlCommand com = new SqlCommand("drop table " + name, dbCon);

它有效,我真的不明白这个错误。

【问题讨论】:

【参考方案1】:

您不能使用参数作为表名。尽管您通常会在这里被告知使用字符串连接构建查询,但这是您需要这样做的一个场合!

SqlCommand com=new SqlCommand("drop table " + name, dbCon);

【讨论】:

【参考方案2】:

我不推荐,但如果你真的想使用SQLParameter,那么这种方式是可能的。

SqlCommand com=new SqlCommand("EXEC('drop table ''' + @nume + '''')", dbCon);

但实际上,这样做并没有任何优势。这适用于 SQL Server 2005 及其最新版本。

【讨论】:

以上是关于SQL Server:使用 SQL 参数删除表的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server:使用 FK 删除表

SQL Server - 在模式中触发AFTER INSERT表

Sql Server 删除所有表

如何删除大量数据 sql server2005 数据量在8千万左右??

批量删除Sql Server对象(表,存储过程,触发器)

SQL Server删除表及删除表中数据的方法