Имя таблицы 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-инъекций, верно?

Ответы на вопрос(1)

Ваш ответ на вопрос