Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySqlParameter jako TableName

Nie możesz przekazać nazwy tabeli jako parametru. Aby to zrobić, musisz użyć dynamicznego SQL, więc musisz to zrobić, aby to zrobić, na przykład

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

Ale ponieważ użytkownicy wprowadzają tableName, możliwe jest wstrzyknięcie SQL. Możesz użyć tego kodu SQL, aby określić, czy ta tabela istnieje przed zapytaniem o cokolwiek z niej:

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

(Możesz idealnie sparametryzować to zapytanie, więc wstrzyknięcie SQL zostanie wyeliminowane)

Ogólnie uważaj na wstrzykiwanie SQL. Ale jeśli używasz tego wewnętrznego (nie udostępniaj użytkownikowi), wstrzyknięcie SQL nie powinno stanowić problemu.

Lepiej, możesz skonstruować procedurę składowaną, aby sobie z tym poradzić, tak jak w mojej innej odpowiedzi:

Zunifikowany getter SQL z LINQ




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zainstaluj MySQL na komputerze Mac

  2. Jak ręcznie zarejestrować niestandardowe funkcje SQL w aplikacji Spring Boot?

  3. Gdzie powinienem przechowywać parametry połączenia z bazą danych?

  4. Skopiuj bazę danych mysql ze zdalnego serwera na komputer lokalny

  5. Pobierz wszystkie wiadomości i wszystkie komentarze