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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-06-2007
Avatar de ivan022481
ivan022481 ivan022481 is offline
Miembro
 
Registrado: abr 2006
Posts: 25
Poder: 0
ivan022481 Va por buen camino
Conviene usar DBExpress?

Cuando empezamos con delphi los primeros componetes que usamos para acceso a DB fueron los Interbase, luego BDE, ya que me cambie a SQL Server, luego ADO (para no usar ODBC). Siempre trabaje bien en todos estos, ahora estoy probando DBExpress en Delphi 2007 para conectarme a una BD en MySQL. Todo bien, pero al momento de agregar una grilla (componente que usamos mucho en los sistemas que diseñamos en nuestra empresa) me emite un error que solo maneja datos de manera unidireccional. Leyendo en el foro encontre una solucion que al ser valida me pone en duda la utilizacion de los DBExpress, por lo menos para MySQL. La solución es utilizar un ClientDataSet enlazado a un TDataSetProvider y este mismo enlazalo al TSQLQuery, despues se añade un TClientDataSet y se enlaza al TDatasetProvider . Me pregunto, ¿cada vez que quiera utilizar una grilla voy a tener que utilizar todos estos componentes?(y eso que solo probe con una grilla, no se otros componentes de acceso a datos). Es ahi cuando me viene la pregunta que figura como titulo. Antes con solo enlazar un TQuery o TTable a un TDataSource y la grilla enlazada al TDataSource "voila", tenia los datos en la grilla.
Otra solucion alternativa a DBExpress (por lo menos para utilizar una BD de MySQL) es usar Zeos, pero todavia no vienen para Delphi 2007. Me gustaria que me cuenten su experiencia a ver si nos convencemos de utilizar DBExpress. Saludos.
Responder Con Cita
  #2  
Antiguo 29-06-2007
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
Mejor usa Zeos, son mucho más sencillos y bastante confiables. Además traen los fuentes. Por ejemplo para hacer lo de la grilla solo necesitas:

Un TZConnection (que hace la conexión y puede compartirse con otros componentes que lo requieran)

Un TZQuery (el query en si)

Un TDataSource (para accesar a los datos del query)

Y listo.

El TZQuery se comporta como cualquier tabla de Delphi, soporta Edit, Post, Insert, LookUp, Locate, etc.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #3  
Antiguo 29-06-2007
Avatar de ivan022481
ivan022481 ivan022481 is offline
Miembro
 
Registrado: abr 2006
Posts: 25
Poder: 0
ivan022481 Va por buen camino
Coincido totalmente AzidRain, pero por ahora lo Zeos no estan para la version 2007 de Delphi. Usamos Zeos en su momento y sabemos de su efectividad y facil uso, pero lamentablemente por ahora no hay librerias para Delphi 2007.
¿Vos fuiste el que hizo un manual de instalacion para Zeos?
Responder Con Cita
  #4  
Antiguo 30-06-2007
maro maro is offline
Miembro
 
Registrado: sep 2003
Ubicación: Sevilla
Posts: 104
Poder: 21
maro Va por buen camino
Hola,

Llevo mucho tiempo usando DBExpress.

Es cierto que son componentes más complicados de usar.

La ventaja es que al ser componentes unidireccionales ofrecen mayor velocidad en la consulta de datos y ofrecen un rendimiento más adecuado para aplicaciones de 3 capas.

Ten en cuenta, que los componentes que mencionas (tClientDataset, TDatasetProvider , etc) son componentes diseñados para trabajar en 3 capas y separar (físicamente) la capa SQL (donde pondríamos los componentes de DBExpress + TDatasetProvider) de la capa cliente (donde pondríamos los tClientdataSets)

Lógicamente no te los recomiendo para aplicaciones de 2 capas, donde esta configuración es más lenta y complicada de usar.

Un Saludo.
__________________
Maro. OutSourcing de programación con Delphi.
Responder Con Cita
  #5  
Antiguo 30-06-2007
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
Lógicamente no te los recomiendo para aplicaciones de 2 capas, donde esta configuración es más lenta y complicada de usar.
Puedes detallar un poco mas tu razonamiento?
pq es mas lenta? y donde estara la complicacion?
Aqui se dice lo contrario..
__________________
¿Microsoft? No, gracias..

Última edición por Delfino fecha: 30-06-2007 a las 14:15:22.
Responder Con Cita
  #6  
Antiguo 30-06-2007
maro maro is offline
Miembro
 
Registrado: sep 2003
Ubicación: Sevilla
Posts: 104
Poder: 21
maro Va por buen camino
Hola,

Comentar, que es mi opinión y no está basada en una documentación técnica (puesto que yo soy autodidacta ), sino, en mi experiencia al trabajar con esta técnica, por lo cuál puedo equivocarme fácilmente.

Igualmente quisiera dejar claro que soy partidario de trabajar con estos componentes, y es obvio ya que todos mis proyectos los fabrico con dbExpress + DataSnap.

Considero que es más lento por una sencilla razón: para obtener los mismos resultados utilizamos mayor número de procesos.

Disculpen que esto pueda ser un poco espeso:

Suponiendo que utilizamos Socket Server:

El usuario solicita registros -> ClientDataset -> SocketConnection (empaquetado y codificación de la petición) -> Transmisión por Internet o red -> Socket Server (desempaquetado de petición, interpretación) -> Servidor SQL -> tDatasetProvider -> tSLQDataset -> Servidor BD (apertura de cursor y retorno de TODOS los registros solicitados). -> tSQLDataset -> tDatasetProvider -> Servidor SQL (Empaquetado de todos los registros, incluyendo estructura de campos, restricciones, etc. Esto se hace con un Whlile para recorrecorer todos los registro y por cada registro un For para recorrecr todos los campos de la consulta y añadiendolos al paquete que se retornará) -> Socket Server (interpretación y retorno al la capa Cliente) -> Transmisión por Internet o red (un solo paquete indistintamente de su tamaño, provocando posibles cuellos de botella, demoras, etc) -> SocketConection (interpretación, desempaquetado, de nuevo While's y for...) -> ClientDataset (resultado de la consulta cargada en memoria Ram, muchos ClientDataset, con muchos registros: consumo de recursos - Desbordamiento de memoria Ram) -> presentación de datos al usuario.

Posibles errores:
Son muchos los inconvenientes de una mala gestión de esta tecnica.
Realmente lo que tenemos en un ClientDataset es una copia de los registros que hipoteticamente tenemos en la BD. Si por algún motivo se manipulan los datos en la BD (procedimientos almacenados, triggers, otros usuarios) podemos obtener error de conciliación de datos.

La complicación real, está en que hay conocer muy bien como funciona un modelo en tres capas para desarrollar correctamente nuestro software.
Si pasamos a programar de 2 a 3 capas el programador tendrá inventar nuevas técnicas para realizar procesos que eran muy simples en 2 Capas (como puede ser la asignación de valores a los campos PRIMARY KEY de las tablas)


No obstante, no me mal interpreten, con una tecnica muy depurada recomiendo fabricar aplicaciones en 3 capas antes que en 2 capas.

Pero, simplemente es mi opinión.

Un Saludo.
__________________
Maro. OutSourcing de programación con Delphi.

Última edición por maro fecha: 30-06-2007 a las 15:39:19.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
me conviene usar SQL Server Mc_Hacks Conexión con bases de datos 6 20-12-2006 03:25:28
que CVS me conviene?? pvizcay Varios 6 18-09-2006 22:17:58
¿Que Grilla conviene usar? YaninaGenia SQL 2 03-01-2006 16:21:31
[Principiante] Que me conviene? strummer Varios 9 05-12-2005 22:11:36
Conviene MySQL? edfz MySQL 9 08-04-2005 10:25:12


La franja horaria es GMT +2. Ahora son las 10:20:38.


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