Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-12-2006
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 22
emeritos Va por buen camino
Efectividad en Mysql

Estoy utilizando Delphi7 con Mydac y MySQL.

Estoy dandole de alta a registros de una tabla de esta manera.

Código Delphi [-]
MQnumperdido.Insert;
MQnumperdido.Edit;
MQnumperdido['codigo_mp'] := MQentradamp['codigo_mp'];
MQnumperdido['numero_perdido'] := MQentradamp['n_entrada'];
MQnumperdido.Post;
MQnumperdido.Refresh;

Mi pregunta es : ¿ es efectivo esta manera de hacerlo y que si hay otra mejor cual seria ? .

Gracias.

Última edición por dec fecha: 06-12-2006 a las 09:23:32.
Responder Con Cita
  #2  
Antiguo 08-12-2006
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Oks, El uso de componentes TTable en aplicaciones cliente servidor (Igual para las locales) es una muy mala práctica pues afecta el rendimiento del equipo y de la red al tener que manejar todo el conjunto de datos a la vez (Imagina que la tabla crece hasta 200 000 registros). Por ello lo ideal es hacer uso de Procedimientos almacenados.

Ahora, si no es posible hacer uso de procedimientos almacenados, lo ideal es trabajar sobre un conjunto limitado de registros haciendo uso de objetos TQuery, esto mejorará el rendimiento de tu aplicación.

Espero haberte ayudado con tu duda.


Suerte
Responder Con Cita
  #3  
Antiguo 10-12-2006
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 22
emeritos Va por buen camino
Yo utilizo TQuery y solo me gustaria saber si al hacer TQuery.Delete; ejecuta el TQuery.SQLDelete; es decir, la sentencia de sql que hay en esa propiedad.
Responder Con Cita
  #4  
Antiguo 11-12-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
No estoy de acuerdo con Poliburro. Tiene razon en parte. Es perfectamente válido usar Insert, Post y Delete con componentes que accesan a tablas MySQL como es el caso. De hecho el componente que utilices (en tu caso MyDAC) se encarga de generar las setencias SQL necesarias para hacer la operación.

Lo que si es un hecho es que hay que tener cuidado con cuantos registros se van a traer por medio de un query. Si son solo unos cuantos no hay tanto problema pero cuidado cuando sean miles.

Un truco que yo uso es tener un Query que me regrese una tabla vacía para hacer las inserciones. Así por ejemplo, si tengo una tabla clientes, uso un TZQuery (yo uso Zeos, pero es igual para otros componentes) y le pongo la sentencia SQL : select * from clientes where ID_Cliente is null (la tabla está diseñada para no permitir que el campo ID_Cliente acepte nulos por lo que la sentencia anterior siempre devuelve una tabla vacía). Con este query hago las inserciones sin ningún problema usando solo comandos "normales" de Delphi.

El meollo del asunto es tener cuidado con la cantidad de registros que traes mediante un Query, como ya comenté.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #5  
Antiguo 11-12-2006
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 22
emeritos Va por buen camino
Sobre las inserciones te agradezco el truco.

Pero para las modificaciones y eliminaciones, que se te tienes que traer parte de los datos, seria aceptable utilizar el TQuery.delete o TQuery.Post.

Gracias.
Responder Con Cita
  #6  
Antiguo 11-12-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Es lo mismo... Si haces un TQuery.Delete el query manda una sentencia "DELETE FROM TABLE..." y el post hace un "UPDATE TABLE..." o "INSERT INTO ..." segun lo que estés haciendo (insertando un registro o editandolo).

De manera que:
Para insertar...
Código Delphi [-]
MQnumperdido
MQnumperdido.Insert;
MQnumperdido.Edit;  {<---Este Edit sobra, Insert pone el query en Edit en automático}
MQnumperdido['codigo_mp'] := MQentradamp['codigo_mp'];
MQnumperdido['numero_perdido'] := MQentradamp['n_entrada'];
MQnumperdido.Post;
MQnumperdido.Refresh; {Este refresh no se si valga la pena...}

Para borrar un registro actual...
Código Delphi [-]
{--- Suponiendo que el registro actual es el que queremos borrar --}

MQnumperdido.Delete
No importa si el query de donde borramos solo contiene unas cuantas filas o incluso una sola, el registro se borra de la tabla completamente...es decir...

si tengo un query "SELECT * FROM CLIENTES" y otro "SELECT * FROM CLIENTES WHERE NOMBRE LIKE '%COMPANY%' " en ambos casos hacer un delete a cualquier registro nos da el mismo resultado: la eliminación, en este caso del cliente, de la tabla. Obviamente el primer Query tardará mas en abrirse que el segundo antes de poder hacer el TQuery.Delete.

Ojo...Usar los metodos del TQuery solo funciona si el query que utilizas es de una sola tabla, si incluye joins o alguna otra cosa relacionada con mas de 1 tabla no es posible. Esto debido a que la mayoría de los motores no permiten editar sentencias multitablas.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
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
¿Por qué MySql? rastafarey Debates 11 08-01-2007 17:43:52
MySQL y DBf bvargas_cr MySQL 0 19-06-2006 04:02:59
PHP & MySQL woody PHP 1 24-04-2006 00:04:02
como conectarme remotamente mysql a mysql sakuragi MySQL 14 11-11-2004 15:04:46
MySQL User_Baja_2 SQL 5 23-03-2004 17:09:48


La franja horaria es GMT +2. Ahora son las 15:01:17.


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