MySQL Workbench
 sql >> Baza danych >  >> Database Tools >> MySQL Workbench

Zapytanie SQL działa w środowisku roboczym, ale otrzymuje błąd „Nie można przekonwertować typu wariantu” z dokładnie tym samym zapytaniem w Delphi

Zgadzam się z komentarzem SirRufo tutaj. Prawidłowa odpowiedź na pytanie „jak to zrobić?” to „nie rób tego; to zły sposób”.

Jeśli umieścisz wartości bezpośrednio w zapytaniu, hakerzy mogą znaleźć sposób na umieszczanie w zapytaniu elementów, które zostaną zinterpretowane jako Polecenia SQL. Jest to znane jako wstrzyknięcie SQL i jest odpowiedzialny za zniszczenia warte miliardy dolarów w ciągu ostatnich kilkudziesięciu lat. (Nie przesadzam.)

Właściwym sposobem na to jest czyste oddzielenie kodu SQL od danych za pomocą parametrów tak:

ADOQuery1.SQL.Clear;

//: before an identifier specifies a parameter
ADOQuery1.SQL.Add('SELECT tbl.emailAddress, tbljob.Time FROM '+
  'dbwindowwash.tblclient, dbwindowwash.tbljob, dbwindowash.tbljobclientworker '+
  'WHERE tbljobclientworker.jobID = tbljob.jobID AND '+
  'tbljobclientworker.clientID = tblclient.clientID AND tbljob.Date = :date';

//parse the query and find parameter declarations
ADOQuery1.Prepare;

//set a value for the parameter
ADOQuery1.ParamByName['date'].AsDateTime := TodaysDate;

ADOQuery1.Open

Dokładna składnia sposobu ustawiania wartości parametru może różnić się w zależności od typu zbioru danych, ale to powinno dać ci podstawowe pojęcie.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Errno 121, zduplikowany klucz przy zapisie lub aktualizacji?

  2. błąd 1215 MYSQL Nie można dodać ograniczenia klucza obcego,

  3. Awaria MySQL Workbench podczas uruchamiania w systemie Windows

  4. Niechciana ocena w zadaniach w Mathematica:dlaczego tak się dzieje i jak debugować podczas ładowania pakietu?

  5. Przenoszenie połączeń i instancji między dwoma komputerami