Anda tidak dapat melewatkan nama tabel sebagai parameter. Anda harus menggunakan SQL dinamis untuk melakukan ini, jadi Anda harus konsentrasi string untuk melakukannya, misalnya
MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)
Tetapi karena pengguna memasukkan tableName, maka injeksi SQL dimungkinkan. Anda dapat menggunakan SQL ini untuk menentukan apakah tabel itu ada sebelum meminta sesuatu darinya:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';
(Anda dapat membuat parameter kueri ini dengan sempurna, sehingga injeksi SQL akan dihilangkan)
Secara umum, berhati-hatilah dengan injeksi SQL. Tetapi jika Anda menggunakan internal ini (tidak mengekspos ke pengguna), maka injeksi SQL seharusnya tidak menjadi masalah.
Lebih baik, Anda dapat membuat prosedur tersimpan untuk menangani ini, seperti dalam jawaban saya yang lain:
Pengambil SQL terpadu dengan LINQ