加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C#中使用SQL参数DROP INDEX

发布时间:2020-12-15 23:33:44 所属栏目:百科 来源:网络整理
导读:我正在尝试通过在删除SQL Server索引时使用参数来遵循最佳实践(并且还删除Visual Studio代码分析警告). 不使用参数工作正常: string tableName = "dbo.TableName";SqlCommand sqlCommand = new SqlCommand("DROP INDEX Blah ON " + tableName);sqlCommand.C
我正在尝试通过在删除SQL Server索引时使用参数来遵循最佳实践(并且还删除Visual Studio代码分析警告).

不使用参数工作正常:

string tableName = "dbo.TableName";

SqlCommand sqlCommand = new SqlCommand("DROP INDEX Blah ON " + tableName);

sqlCommand.Connection = sqlConnection;
sqlCommand.ExecuteNonQuery();

但是,当我尝试使用参数时,我收到错误

Incorrect syntax near ‘@TableName’.

码:

string tableName = "dbo.TableName";

SqlCommand sqlCommand = new SqlCommand("DROP INDEX Blah ON @TableName");

sqlCommand.Parameters.Add(new SqlParameter("TableName",tableName));

sqlCommand.Connection = sqlConnection;
sqlCommand.ExecuteNonQuery();

我究竟做错了什么?

解决方法

你没有做错任何事.参数不能用于替换标识符 – 列名称/别名,表名称/别名,模式名称和数据库名称.它们也不能用于替换函数名称或运算符或关键字.

这是一个很长的清单.它们可用于替换查询中的常量.

我想记住这个的方法是参数化查询可以预编译.为了编译查询,需要解析所有对象引用 – 因此参数不能提供值.

您已经通过将表放在字符串中来解决问题.您可以使用quotename()来帮助防止注射(参见here).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读