Sie können den Tabellennamen nicht als Parameter übergeben. Sie müssen dazu dynamisches SQL verwenden, also müssen Sie die Zeichenfolge konzentrieren, zum Beispiel
MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)
Da Benutzer jedoch den Tabellennamen eingeben, ist eine SQL-Einschleusung möglich. Sie können diese SQL verwenden, um festzustellen, ob diese Tabelle existiert, bevor Sie etwas von ihr abfragen:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';
(Sie können diese Abfrage perfekt parametrisieren, sodass SQL-Injection eliminiert wird)
Seien Sie im Allgemeinen vorsichtig mit der SQL-Injektion. Aber wenn Sie dies intern verwenden (nicht dem Benutzer zugänglich machen), sollte die SQL-Injektion kein Problem darstellen.
Besser, Sie können eine gespeicherte Prozedur erstellen, um damit umzugehen, wie in meiner anderen Antwort: