gpt4 book ai didi

c# - 如何将表名传递给 SqlCommand?

转载 作者:行者123 更新时间:2023-11-30 13:37:23 27 4
gpt4 key购买 nike

我试图通过 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处理你的 SqlConnectionSqlCommand

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com