作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过 SqlCommand
将表名作为参数传递给我的查询,但它似乎不起作用。这是我的代码;
SqlConnection con = new SqlConnection( "server=.;user=sa;password=12345;database=employee" );
con.Open( );
SqlCommand cmd = new SqlCommand( "drop table @tbName" , con );
cmd.Parameters.AddWithValue( "@tbName" , "SampleTable" );
cmd.ExecuteNonQuery( );
con.Close( );
最佳答案
SqlCommand.Parameters
Data manipulation language 支持 操作不是 Data definition language 操作。
即使您使用 DML,也不能参数化您的表名或列名等。您只能参数化您的值。
数据操作语言=
SELECT ... FROM ... WHERE ...
INSERT INTO ... VALUES ...
UPDATE ... SET ... WHERE ...
DELETE FROM ... WHERE ...
数据定义语言=
CREATE TABLE ...
DROP TABLE ... ;
ALTER TABLE ... ADD ... INTEGER;
您不能使用 DROP
statement带参数。
如果您真的必须使用 drop 语句,您可能需要在 SqlCommand
上使用字符串连接。 (注意 SQL Injection )您可能需要查看名为 Dynamic SQL 的术语
也可以使用 using
statement处理你的 SqlConnection
和 SqlCommand
;
using(SqlConnection con = new SqlConnection(ConnectionString))
using(SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "drop table " + "SampleTable";
con.Open()
cmd.ExecuteNonQuery();
}
关于c# - 如何将表名传递给 SqlCommand?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23357481/
我是一名优秀的程序员,十分优秀!