Abbiamo portato il codice a Delphi XE2 e abbiamo bisogno di cambiare i componenti di accesso ai dati da ODBCExpress di terze parti che non è più in commercio, a TSQLQuery di dbExpress. query SQLÈ possibile utilizzare TSQLQuery di dbExpress? come parametri?
Abbiamo parametrizzata come ad esempio:
sSQL :=
'UPDATE ZTestData SET '+
' StringField =?, '+
' IntField = ?, '+
' DecimalField = ?, '+
' BooleanField = ?, '+
' DateTimeField = ?, '+
' TextField = ? '+
' WHERE UniqueID = 3';
se usiamo il seguente codice:
var
qry:TSQLQuery;
begin
qry.Close;
qry.SQL.Text := sSQL;
ShowMessage(IntToStr(qry.Params.Count));
end;
Esso restituisce 0, quindi non siamo in grado di ottenere le associazioni di lavoro, ma se cambiamo sSQL a:
sSQL :=
'UPDATE ZTestData SET '+
' StringField =:Param1, '+
' IntField = :Param2, '+
' DecimalField = ?, '+
' BooleanField = ?, '+
' DateTimeField = ?, '+
' TextField = ? '+
' WHERE UniqueID = 3';
Riporta 2.
Sarà una grande seccatura cambiare tutte le query SQL nella nuova sintassi dei parametri. È comunque necessario che TSQLQuery riconosca il? sintassi?
Vedo che DBXCommon.TDBXCommand utilizza il? sintassi:
http://www.andreanolanusse.com/en/parameterized-queries-with-dbexpress-dbx-framework/
Ma vorrebbe dire buttare via il nostro codice che utilizza TSQLQuery. Qual è il modo più rapido/semplice per risolvere questo problema? Qual è la differenza tra TSQLQuery e TDBXCommand comunque, in termini di ciò che è rilevante per me?
Vedere la risposta. DB.TParams.ParseSQL è un metodo che converte i parametri in punti interrogativi, se questa è la rotta che si desidera percorrere. Preferisco di gran lunga ParamByName me stesso. – Robo