En Delphi usando TIBOQuery (de IBObjects), puedes ejecutar una sentencia SQL de varias maneras dependiendo del tipo de consulta que deseas hacer.
�� Para consultas de selección (SELECT)
Si necesitas recuperar datos de la base de datos:
Código Delphi
[-]
IBOQuery1.SQL.Text := 'SELECT * FROM clientes WHERE ciudad = :ciudad';
IBOQuery1.ParamByName('ciudad').AsString := 'Madrid';
IBOQuery1.Open;
Aquí se usa ParamByName para evitar SQL Injection y mejorar rendimiento.
�� Para consultas de acción (INSERT, UPDATE, DELETE)
Si necesitas ejecutar una consulta que modifique datos:
Código Delphi
[-]IBOQuery1.SQL.Text := 'UPDATE clientes SET telefono = :telefono WHERE id = :id';
IBOQuery1.ParamByName('telefono').AsString := '123456789';
IBOQuery1.ParamByName('id').AsInteger := 10;
IBOQuery1.ExecSQL;
�� ExecSQL se usa en sentencias que no devuelven datos.
�� Para ejecutar una consulta sin parámetros
Si la consulta es fija y sin parámetros, puedes ejecutarla directamente:
Código Delphi
[-]IBOQuery1.SQL.Text := 'DELETE FROM pedidos WHERE estado = ''cancelado''';
IBOQuery1.ExecSQL;
�� Para recorrer los datos después de ejecutar un SELECT
Si necesitas procesar los resultados de una consulta:
Código Delphi
[-]IBOQuery1.SQL.Text := 'SELECT id, nombre FROM clientes';
IBOQuery1.Open;
while not IBOQuery1.Eof do
begin
ShowMessage('Cliente: ' + IBOQuery1.FieldByName('nombre').AsString);
IBOQuery1.Next;
end;
IBOQuery1.Close;
en concreto Cdamer, lo que ParamByName te permite es con ayuda de la "cadena de texto" construir sentencias SQL para el TQuery asi digamos "personalizadas" como con variables y tal que podrian tomar ciertos valores en el transcurso del programa o bien por ejemplo si tenemos alguna especie de "Constructor" (en nuestra app) para que el usuario digamos "pregunte (via SQL)" cosas que le vengan en gana (al usuario) a la BD variando esos valores de la consulta SQL me refiero mediante algun sistema que tu mismo elabores para el usuario por ejemplo un desplegable con opciones relativas a cierto campo o bien un Editbox donde el usuario meteria numeros para por ejemplo listar registros cuyo "salario" sea de tanto ..... entiendes no?? eso le da mucha mas flexibilidad y customizacion potente que si por ejemplo solo estableces en el codigo la sentencia SQL pre-fijada.
Espero que asi te quede mas claro todo, un saludo amigo