Nemůžete předat název tabulky jako parametr. K tomu musíte použít dynamické SQL, takže k tomu musíte koncentraci řetězců, například
MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)
Ale protože uživatelé zadávají název_tabulky, je možné vložení SQL. Tento SQL můžete použít k určení, zda daná tabulka existuje, než z ní na něco zadáte dotaz:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';
(Tento dotaz můžete perfektně parametrizovat, takže SQL injection odpadá)
Obecně si dávejte pozor na SQL injection. Ale pokud používáte toto interní (nevystavujete se uživateli), pak by SQL injection neměl být problém.
Lépe, můžete vytvořit uloženou proceduru, která se s tím vypořádá, jako v mé další odpovědi: