Имя таблицы MySQL в качестве параметра
Я пытаюсь настроить так, чтобы имя таблицы передавалось тексту команды в качестве параметра, но я не могу заставить его работать. Я немного осмотрелся и нашел такие вопросы:Параметризованный запрос для MySQL с C #Но мне не повезло.
Это соответствующий код (соединение ==MySqlConnection
содержит строку подключения):
public static DataSet getData(string table)
{
DataSet returnValue = new DataSet();
try
{
MySqlCommand cmd = connection.CreateCommand();
cmd.Parameters.AddWithValue("@param1", table);
cmd.CommandText = "SELECT * FROM @param1";
connection.Open();
MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
adap.Fill(returnValue);
}
catch (Exception)
{
}
finally
{
if (connection.State == ConnectionState.Open)
connection.Close();
}
return returnValue;
}
Если я изменю:
cmd.CommandText = "SELECT * FROM @param1";
чтобы:
cmd.CommandText = "SELECT * FROM " + table;
Как способ тестирования, и это работает (я пишу XML из набора данных в консоль, чтобы проверить). Поэтому я почти уверен, что проблема заключается в неправильном использовании функциональности параметров. Есть указатели?
Кроме того, поправьте меня, если я ошибаюсь, но использование функциональности Parameter должно обеспечить полную защиту от SQL-инъекций, верно?