Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2013
diablo66 diablo66 is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 2
Poder: 0
diablo66 Va por buen camino
uso de comillas

serian tan amables de explicarme en este código el uso de comillas ya que yo uso parámetros para hacer lo mismo que hace este código
Código Delphi [-]
            with query do begin
            Close;
            SQL.Clear;
            SQL.Add('UPDATE categorias SET nombre = ''' + txtCategoria.Text + ''',');
            SQL.Add('cuenta = ''' + txtClave.Text + ''',');
            SQL.Add('fecha_umov = ''' + FormatDateTime(Formato_Fecha,Date) + '''');//'mm/dd/yyyy'
            SQL.Add('WHERE clave = ' + IntToStr(iClave));
            ExecSQL;
            Close;
        end;

general mente lo escribo asi
Código Delphi [-]
 AdoQuery:=TADOQuery.Create(nil);

   try

    AdoQuery.Connection:=ADOconection1;
    AdoQuery.SQL.Add('SELECT fecha,P_Id  FROM total WHERE fecha=:fecha and P_Id=:P_Id2');
    AdoQuery.Parameters.ParamByName('fecha').Value := fecha;
    AdoQuery.Parameters.ParamByName('P_Id2').Value := P_Id;
    AdoQuery.Prepared;
    AdoQuery.Open;
    AdoQuery.First;
Responder Con Cita
  #2  
Antiguo 04-10-2013
blackx5n blackx5n is offline
Miembro
 
Registrado: feb 2008
Posts: 51
Poder: 17
blackx5n Va por buen camino
Wink

No es necesario que agreges muchas comillas simples para concatenar con los edits

Código Delphi [-]
SQL.Add('UPDATE categorias SET nombre = ' ' ' + txtCategoria.Text + ' ' ',');

Prueba hacerlo de esta forma:

Código Delphi [-]
with query do begin
  Close;
  SQL.Clear; 
SQL.Add('UPDATE categorias SET nombre = ' + txtCategoria.Text + ','+  
    'cuenta = ' + txtClave.Text + ','+
    'fecha_umov = ' + FormatDateTime(Formato_Fecha,Date) +
    'WHERE clave = ' + IntToStr(iClave));
     ExecSQL;
     Close;
   end;
Responder Con Cita
  #3  
Antiguo 04-10-2013
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola diablo66,

Prueba con esto, sencillo, claro y fácil de entender.
Código Delphi [-]
...
begin
  with Qry do
  begin
    Close;

    SQL.Add('UPDATE Categorias');
    SQL.Add('  SET');
    SQL.Add('    NOMBRE      = ' + QuotedStr(txtCategoria.Text));
    SQL.Add('    ,CUENTA     = ' + txtClave.Text));
    SQL.Add('    ,FECHA_UMOV = ' + QuotedStr(FormatDateTime('dd/mm/yyyy', date)));
    SQL.Add('  WHERE CLAVE = ' + IntToStr(iClave));

    ExecSQL;

    Close;
  end;
end;

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #4  
Antiguo 04-10-2013
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Explicación de comillas.
Si quieres hacer una cadena que contenga comillas simples, la forma de "engañar" al compilador es poner doble comilla simple.
El compilador al recorrer tu código cuando encuentra una comilla simple trata a lo que sigue como una cadena hasta que encuentra la siguiente comilla simple. La excepción es cuando encuentra la comilla que cierra la cadena, se fija si hay otra detrás. Si es así, trata esa doble comilla simple como una sola comilla simplre y sigue tratando lo que sigue como cadena.

Código Delphi [-]
s := '';
// s = string vacío

s := '''';
// s = ' (una comilla simple)

s := '''123''';
// s = '123'

x := 'ABC';
s := '''' + x + '''';
// s = 'ABC'
Responder Con Cita
  #5  
Antiguo 04-10-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
diablo66,

Cita:
Empezado por diablo66
...explicarme en este código el uso de comillas...
Revisa este código:
Código SQL [-]
SQLWMI := 'SELECT Name, ProcessId, Caption, ExecutablePath FROM Win32_Process Where Name = ' + QuotedStr(ProcessName);
El código anterior concatena una variable String en una consulta SQL, lo cual elimina la necesidad del uso de comillas simples y facilita la lectura y escritura del mismo.

Revisa esta información:



Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 04-10-2013 a las 16:00:02.
Responder Con Cita
  #6  
Antiguo 05-10-2013
diablo66 diablo66 is offline
Registrado
NULL
 
Registrado: oct 2013
Posts: 2
Poder: 0
diablo66 Va por buen camino
gracias a todos me fue de gran ayuda
Responder Con Cita
  #7  
Antiguo 05-10-2013
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
En mi opinión, continua trabajando con parámetros. Te ahorrarás muchos problemas, y el código queda más limpio que no concatendando cadenas, ya sea usando muchas comillas o con la función QuotedStr().
Responder Con Cita
  #8  
Antiguo 05-10-2013
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Se queda más limpio con QuotedStr y, jamas he utilizado parámetros alguno.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #9  
Antiguo 06-10-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por mcs Ver Mensaje
En mi opinión, continua trabajando con parámetros. Te ahorrarás muchos problemas, y el código queda más limpio que no concatendando cadenas, ya sea usando muchas comillas o con la función QuotedStr().


Y lo mas importante: Con el uso de parámetros se anula la posibilidad de la inyección SQL

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 06-10-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
diablo66,

Cita:
Empezado por mcs
...En mi opinión, continua trabajando con parámetros...
Cita:
Empezado por olbeup
...queda más limpio con QuotedStr y jamas he utilizado parámetros alguno...
Cita:
Empezado por ecfisa
...Con el uso de parámetros se anula la posibilidad de la inyección SQL...
En general lo ideal es usar parámetros en SQL, sin embargo el uso de la función QuotedStr o AnsiQuotedStr pueder ser muy práctico en casos particulares, no como norma de programación de BD con Structured Query Language.

Espero sea útil

Nelson.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
String Con comillas agonzalez Varios 14 03-03-2017 07:46:41
reemplazar dos comillas simples ingabraham Varios 2 18-09-2013 19:13:14
update campo con comillas toni.vi SQL 7 18-11-2009 17:44:37
Las comillas de marras! IPQ Firebird e Interbase 3 15-06-2006 16:26:45
Comillas y fechas Carlex SQL 6 26-01-2006 03:22:02


La franja horaria es GMT +2. Ahora son las 18:01:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi