sql >> Database teknologi >  >> Database Tools >> MySQL Workbench

SQL Query fungerer i Workbench, men får fejlen 'Kunne ikke konvertere varianttype' med nøjagtig samme forespørgsel i Delphi

Enig med SirRufos kommentar her. Det rigtige svar på "hvordan gør jeg det?" er "det skal du ikke gøre; det er den forkerte måde at gøre det på."

Hvis du på den måde sætter værdier direkte ind i forespørgslen, kan hackere finde en måde at placere ting i din forespørgsel, der bliver fortolket som SQL-kommandoer. Dette er kendt som SQL-injektion , og den har været ansvarlig for skader for milliarder af dollars i de sidste par årtier. (Ikke overdrive.)

Den rigtige måde at gøre det på er ved rent at adskille din SQL-kode fra dine data ved at bruge parametre, sådan:

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

Den nøjagtige syntaks for, hvordan man indstiller værdien af ​​en parameter kan variere fra en datasættype til en anden, men det burde give dig den grundlæggende idé.



  1. Hvordan eksporterer man en enkelt tabel fra phpmyadmin til en kommasepareret tekstfil?

  2. Kan ikke installere adventureworks 2012-database - Operativsystemfejl 5:Adgang nægtes

  3. Sådan fjerner du en unik nøgle på et bestemt mysql-tabelfelt

  4. eksporter stor database mysql phpmyadmin