Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2005
ekimo ekimo is offline
Registrado
 
Registrado: nov 2004
Posts: 6
Poder: 0
ekimo Va por buen camino
Variables en sentencias sql

Que tal como estan.
Estoy usando MySql 4.0 y MySql Front, alguien sabe como usar variables o parametros en las consultas de MySql, es decir hago una consulta por ejemplo.

Select Nombre,Direccion From Datos where nombre='algo'

Donde 'algo' es la variable o parametro.

Les agradesco su atencion y ayuda.
Responder Con Cita
  #2  
Antiguo 16-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Qué componentes usas?

Normalmente se anteponen dos puntos al parámetro:

Código SQL [-]
Select Nombre,Direccion From Datos where nombre=:algo

// Saludos
Responder Con Cita
  #3  
Antiguo 16-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
ahhh osea que si manejo un edit por ejemplo para hacer una busqueda es asi??

Código:
Select Nombre,Direccion From Datos where nombre=:edit.text
Responder Con Cita
  #4  
Antiguo 16-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No.

Ten presente que Delphi* y SQL son dos lenguajes completamentes separados. SQL no podrá entender qué le quieres decir con edit1.text ya SQL sólo entiende de nombres de tablas y campos.

De hecho SQL ni siquiera entiende los dos puntos. Estos son simplemente para que la componente Query sepa que se trata de un parámetro pero tú tienes que proporcionarles es valor. Por ejemplo:

Código Delphi [-]
Query1.SQL.Add('Select Nombre,Direccion From Datos where nombre=:algo');
Query1.ParamByName('algo').AsString := Edit1.Text;
Query1.Open;

Si Edit1.Text contiene 'juan pérez', al servidor SQL lo que le llega es:

Código SQL [-]
Select Nombre,Direccion From Datos where nombre='juan pérez';

* Como esta pregunta está en el foro de MySql realmente no estoy cierto de que se refiera al uso de componentes con Delphi.

// Saludos
Responder Con Cita
  #5  
Antiguo 16-06-2005
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
SISISI pregunataba para delphi entonces no estsba perdido gracias sigan con lo suyo
Responder Con Cita
  #6  
Antiguo 16-06-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 19
dmagui Va por buen camino
Y si yo uso un DataSet y lo que quiero es insertar en mi tabla productos, es algo parecido a esto??

Código:
 
procedure TForm2.Button3Click(Sender: TObject);
var 
algo : string
begin
DataSet1.InsertSql.Add('insert into producto(cod_prod) values (:algo)'); 
DataSet1.ParamByName('algo').AsString := Edit1.Text;
end;
estoy errada?
Responder Con Cita
  #7  
Antiguo 16-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dmagui
estoy errada?
En principio no lo estás. Sólo que me confunde un poco esto de "uso un DataSet". DataSet es un término genérico para denotar a todas las componentes de acceso a datos que derivan de la clase TDataSet. Puede ser un Table, Query, IBTable, IBQuery, ADOTable, ADODataSet, ZQuery, ZTable, entre muchos, muchos otros. Y aunque me parece que la mayoría usa la notación arametro creo recordar que algunas no. Así que tendrías que ser más específica en cuanto a que componentes usas (o probarlo tú misma).

Por otro lado, observa que así como usé AsString en el ejemplo, podrías usar AsInteger, AsFloat, AsBoolean, AsDateTime, etc. Escoge el más adecuado al tipo de datos del campo en la tabla.

// Saludos
Responder Con Cita
  #8  
Antiguo 17-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por roman
Si Edit1.Text contiene 'juan pérez', al servidor SQL lo que le llega es:

Código SQL [-]
Select Nombre,Direccion From Datos where nombre='juan pérez';
Hola Román.

Lamento diferir con vos en este punto, pero esto no es cierto en todos los casos. Muchos de los motores SQL existentes hoy en día proveen, a través de sus distintos API's, soporte para el uso de parámetros.

De hecho, en algunos (como oracle por ejemplo), es recomendable que se usen parámetros, pues se facilita la reutilización de planes de ejecución minimizando la carga por este proceso en el servidor.

Cuando usas parámetros, y el servidor los soporta, delphi envía la sentencia convirtiendo los identificadores de parámetros si es necesario, de manera que sea correctamente interpretado. Podria enviarse entonces, por ejemplo:

Código SQL [-]
Select Nombre,Direccion From Datos where nombre=?

y luego via API asigna el parámetro como 'juan perez'.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 17-06-2005
mikexxi2 mikexxi2 is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
mikexxi2 Va por buen camino
Explicacion

Gracias por su aportacion, explico que componentes uso,
uso Mysql version 4.0 y MysqlFront como visor, desde aqui quiero hacer consultas para filtrar datos y guardarlas para usos posteriores, obviamente despues la condicion cambiara, quiero solo cambiar el valor de la variable sin tener que editar la consulta.
segun lo que dice Roman la consulta quedaria:

Select nombre, direccion from datos where nombre=:algo

Ok, y perdonen si peco de burro, pero donde declaro la variable o parametro algo y cuando ejecuto la consulta como le doy los valores.
Responder Con Cita
  #10  
Antiguo 17-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
Lamento diferir con vos en este punto
No lo lamentes. Es más que bienvenida tu observación. Yo me estaba dejando de lado todos los "Prepared statements" ( gulp)

// Saludos
Responder Con Cita
  #11  
Antiguo 17-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por mikexxi2
explico que componentes uso,
uso Mysql version 4.0 y MysqlFront como visor, desde aqui quiero hacer consultas para filtrar datos y guardarlas para usos posteriores
Ya, ya, o sea que de Delphi nada

No creo que esto se pueda hacer con MySqlFront pero tendría que revisarlo.

// Saludos
Responder Con Cita
  #12  
Antiguo 17-06-2005
mikexxi2 mikexxi2 is offline
Miembro
 
Registrado: nov 2004
Posts: 10
Poder: 0
mikexxi2 Va por buen camino
Ya decia yo

Si tambien tengo la impresion de que no se puede, y para hacerlo habria que usarlo desde delphi u otro lenguaje con componentes que permitan usar parametros. Pero uno de mis jefes esta convencido en que si se puede, claro el nunca lo ha hecho, pero esta "segurisimo", y si no lo logro yo soy el que no sirve, cualquier parecido a la realidad es una porqueria.
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


La franja horaria es GMT +2. Ahora son las 13:51:00.


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