sql >> Database teknologi >  >> RDS >> Mysql

MySqlParameter som tabelnavn

Du kan ikke sende tabelnavn som parameter. Du skal bruge dynamisk SQL for at gøre dette, så du skal strengkoncentration for at gøre det, for eksempel

  MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)

Men fordi brugere indtaster tabelnavnet, så SQL-injektion er mulig. Du kan bruge denne SQL til at bestemme, om den tabel eksisterer, før du forespørger noget fra den:

SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename';

(Du kan perfekt parametrisere denne forespørgsel, så SQL-injektion vil blive elimineret)

Generelt skal du være forsigtig med SQL-injektion. Men hvis du bruger denne interne (ikke udsætte for brugeren), så burde SQL-injektion ikke være et problem.

Bedre, du kan konstruere en lagret procedure til at håndtere dette, som i mit andet svar:

Unified SQL getter med LINQ




  1. Opgradering af en varchar-kolonne til enum type i postgresql

  2. Slet forespørgsel For at slette rækker i MySQL

  3. Hvordan kan jeg få summen af ​​flere datetime-værdier?

  4. MySQL-databaseimplementeringsautomatisering