Du kan ikke sende tabelnavn som parameter. Du skal bruge dynamisk SQL for at gøre dette, så du skal strengkoncentration for at gøre det, for eksempel
MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)
Men fordi brugere indtaster tabelnavnet, så SQL-injektion er mulig. Du kan bruge denne SQL til at bestemme, om den tabel eksisterer, før du forespørger noget fra den:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';
(Du kan perfekt parametrisere denne forespørgsel, så SQL-injektion vil blive elimineret)
Generelt skal du være forsigtig med SQL-injektion. Men hvis du bruger denne interne (ikke udsætte for brugeren), så burde SQL-injektion ikke være et problem.
Bedre, du kan konstruere en lagret procedure til at håndtere dette, som i mit andet svar: