識別子 をパラメータ化することはできません。 (テーブル名またはフィールド名)MySQLでは、ただし、バッククォートを使用してそれらをエスケープできます。
次のクエリは安全に実行されますが、テーブルが存在しないためエラーが発生します(奇妙な可能性がある場合を除いて、実際にこのような名前のテーブルがあります):
SELECT * FROM `users; DROP TABLE users;`;
基本的に、動的な名前またはフィールドは、バッククォートで囲まれている限り使用できます。この方法でSQLインジェクションを防ぐには、最初にバッククォートを取り除くだけです。
tableName = tableName.Replace("`", "");
string commandText = "SELECT COUNT(*) FROM `" + tableName + "`";