Не можете да подадете името на таблицата като параметър. Трябва да използвате динамичен 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 инжекцията не би трябвало да е проблем.
По-добре, можете да създадете съхранена процедура, за да се справите с това, както е в моя друг отговор: