テーブル名をパラメータとして渡すことはできません。これを行うには動的SQLを使用する必要があるため、たとえば
のように集中力を文字列化する必要があります。 MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)
ただし、ユーザーがtableNameを入力するため、SQLインジェクションが可能です。このSQLを使用して、テーブルから何かをクエリする前に、そのテーブルが存在するかどうかを判断できます。
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';
(このクエリを完全にパラメータ化できるため、SQLインジェクションが排除されます)
一般的に、SQLインジェクションに注意してください。ただし、この内部を使用する場合(ユーザーに公開しない場合)、SQLインジェクションは問題になりません。
さらに良いことに、私の別の答えのように、これを処理するためのストアドプロシージャを構築できます: