Uth*_*iah 3 c# ado.net sqlcommand
我试图将表名作为参数传递给我的查询,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( );
Run Code Online (Sandbox Code Playgroud)
SqlCommand.Parameters支持数据操作语言操作而非数据定义语言操作.
即使您使用DML,也无法参数化您的表名或列名等.您只能参数化您的值.
数据操作语言=
SELECT ... FROM ... WHERE ...
INSERT INTO ... VALUES ...
UPDATE ... SET ... WHERE ...
DELETE FROM ... WHERE ...
Run Code Online (Sandbox Code Playgroud)
数据定义语言=
CREATE TABLE ...
DROP TABLE ... ;
ALTER TABLE ... ADD ... INTEGER;
Run Code Online (Sandbox Code Playgroud)
您不能将DROP语句与参数一起使用.
如果你真的必须使用drop语句,你可能需要使用字符串连接SqlCommand.(注意SQL注入)您可能需要查看名为Dynamic SQL的术语
还可以使用using语句来处置您SqlConnection和SqlCommand等;
using(SqlConnection con = new SqlConnection(ConnectionString))
using(SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "drop table " + "SampleTable";
con.Open()
cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4276 次 |
| 最近记录: |