Мне нужно получить все данные из указанных таблиц, и мне не требуется строго типизировать данные, поэтому я возвращаю их в виде таблицы данных.
public DataTable GetByTypeName(String t)
{
var type = Type.GetType(t);
var dt = new DataTable();
using (var sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["MasterPlanConnectionString"].ConnectionString))
{
var sqlComm = new SqlCommand("SELECT * FROM @table", sqlConn);
sqlComm.Parameters.AddWithValue("@table", type.Name);
sqlConn.Open();
var dr = sqlComm.ExecuteReader(CommandBehavior.CloseConnection);
dt.Load(dr);
}
return dt;
}
Когда я запускаю эту командуЯ получаю ошибку
System.Data.SqlClient.SqlException was unhandled by user code
Message=Must declare the table variable "@table".
Я не могу понять, почему это не работает, так как я объявил @table.Я знаю, что этот метод открыт для некоторых плохих SQL-атак, поэтому я планирую добавить некоторую защиту о том, какие именно типы можно запрашивать.