Du kan inte skicka tabellnamn som parameter. Du måste använda dynamisk SQL för att göra detta, så du måste strängkoncentration för att göra det, till exempel
MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)
Men eftersom användare matar in tabellnamnet, så är SQL-injektion möjlig. Du kan använda denna SQL för att avgöra om den tabellen finns innan du frågar något från den:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';
(Du kan perfekt parametrisera den här frågan, så SQL-injektion kommer att elimineras)
Var i allmänhet försiktig med SQL-injektion. Men om du använder den här interna (inte exponera för användaren), bör SQL-injektion inte vara något problem.
Bättre, du kan konstruera en lagrad procedur för att hantera detta, som i mitt andra svar: