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 - 在模式中触发AFTER INSERT表