Вы не можете передать имя таблицы в качестве параметра.Для этого нужно использовать динамический SQL, поэтому для этого нужно сконцентрировать строку, например
MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)
Но поскольку пользователи вводят tableName, внедрение SQL возможно.Вы можете использовать этот SQL, чтобы определить, существует ли эта таблица перед запросом чего-либо из нее:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';
(Вы можете идеально параметризовать этот запрос, чтобы исключить внедрение SQL)
Как правило, будетосторожны с SQL-инъекцией.Но если вы используете это внутреннее (не для пользователя), то внедрение SQL не должно быть проблемой.
Лучше, вы можете создать хранимую процедуру для решения этой проблемы, как в моем другом ответе:
Унифицированный SQL-геттер с LINQ