2015-03-12 7 views
3

Я пытаюсь сбросить таблицу, используя SqlParameters. У меня есть этот код.SQL Server: drop table с параметрами SQL

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); 

это работает, и я действительно не понимаю эту ошибку.

ответ

3

Вы не можете использовать параметр для имени таблицы. Хотя вас обычно приглашают сюда для создания запроса с использованием конкатенации строк, это один случай, когда вам нужно!

SqlCommand com=new SqlCommand("drop table " + name, dbCon); 
1

Я не рекомендую его, но если вы действительно хотите использовать SQLParameter, тогда это возможно.

SqlCommand com=new SqlCommand("EXEC('drop table ''' + @nume + '''')", dbCon); 

Но на самом деле нет никакого преимущества в этом. Эта работа над SQL Server 2005 и новейшей версией.