Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é a melhor maneira de escolher um nome de tabela dinamicamente em tempo de execução?


Você não pode parametrizar um identificador (nome da tabela ou nome do campo) no MySQL, no entanto, você pode escapar deles usando acentos graves.

A consulta a seguir será executada com segurança, mas produzirá um erro porque a tabela não existe (a menos que por alguma estranha chance você realmente tenha uma tabela chamada assim):
SELECT * FROM `users; DROP TABLE users;`;

Basicamente, você pode usar nomes ou campos dinâmicos, desde que estejam entre acentos graves. Para evitar a injeção de SQL dessa maneira, tudo o que você precisa fazer é remover primeiro os backticks:
tableName = tableName.Replace("`", "");
string commandText = "SELECT COUNT(*) FROM `" + tableName + "`";