Nie możesz przekazać nazwy tabeli jako parametru. Aby to zrobić, musisz użyć dynamicznego SQL, więc musisz to zrobić, aby to zrobić, na przykład
MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)
Ale ponieważ użytkownicy wprowadzają tableName, możliwe jest wstrzyknięcie SQL. Możesz użyć tego kodu SQL, aby określić, czy ta tabela istnieje przed zapytaniem o cokolwiek z niej:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';
(Możesz idealnie sparametryzować to zapytanie, więc wstrzyknięcie SQL zostanie wyeliminowane)
Ogólnie uważaj na wstrzykiwanie SQL. Ale jeśli używasz tego wewnętrznego (nie udostępniaj użytkownikowi), wstrzyknięcie SQL nie powinno stanowić problemu.
Lepiej, możesz skonstruować procedurę składowaną, aby sobie z tym poradzić, tak jak w mojej innej odpowiedzi:
Zunifikowany getter SQL z LINQ