Como andan? Abro este nuevo tema porque tengo varias dudas de acuerdo a como realizar aplicaciones que sean eficientes.
Queria saber:
//=======================================
//Insertar o editar registros a una BBDD en MySql desde delphi
//=======================================
1- Hay mucha diferencia entre...?:
* Hacer una consulta insert MySql.
* Utilizar FieldByName()
* Utilizar TNavigator para insertar
------------------------------------------------------------------------------------
En el caso de que sea lo mismo o muy parecido (hablando de eficiencia) no hay problema, pero .... ¿si es mas eficiente una consulta Insert?...:
- ¿Como hago un insert mediante una consulta MySql a un ADOTable que es utilizado para ver el detalle de un ADOQuery Cliente, si el AdoTable no permite ejecutar consultas?. En este caso...
- ¿Tiene algo que ver el ADOCommand?
- ¿Puede ser utiliazado para insertar en un ADOTable?
Espero sus respuestas.
Un saludo!
Publicado:
Lun Ene 04, 2010 8:00 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Temas de optimización Delphi y MySql
Anuncios
agustinbus escribió:
Como andan? Abro este nuevo tema porque tengo varias dudas de acuerdo a como realizar aplicaciones que sean eficientes.
Queria saber:
//=======================================
//Insertar o editar registros a una BBDD en MySql desde delphi
//=======================================
1- Hay mucha diferencia entre...?:
* Hacer una consulta insert MySql.
* Utilizar FieldByName()
* Utilizar TNavigator para insertar
------------------------------------------------------------------------------------
En el caso de que sea lo mismo o muy parecido (hablando de eficiencia) no hay problema, pero .... ¿si es mas eficiente una consulta Insert?...:
- ¿Como hago un insert mediante una consulta MySql a un ADOTable que es utilizado para ver el detalle de un ADOQuery Cliente, si el AdoTable no permite ejecutar consultas?. En este caso...
- ¿Tiene algo que ver el ADOCommand?
- ¿Puede ser utiliazado para insertar en un ADOTable?
Espero sus respuestas.
Un saludo!
Veamos, de cara a la eficiencia del consumo de la capacidad de proceso de la base de datos, hay que diferenciar dos métodos: que los componentes estén enlazados a datos (TNavigator, TDBEdit, TDBComboBox, etc) y que no lo estén.
Si están enlazados a datos, como el caso del TNavigator para insertar, eliminar o editar registros, tienes que tener en cuenta que este método tiene una pequeña penalización con respecto a utilizar un INSERT en una consulta SQL. Si utilizas un INSERT o UPDATE en una consulta SQL sólo consumirá los recursos necesarios en el motor de base de datos para llevar a cabo la operación, en cambio, si utilizas controles enlazados, por el hecho de estar enlazados, estás utilizando una conexión con el motor de base de datos directamente.
Está claro que cada método es útil según qué circunstancias. Para una aplicación de gestión, por ejemplo, donde hay infinidad de componentes para inserción de datos y demás es muy recomendable utilizar componentes enlazados, sino te puedes imaginar la dificultad de los INSERT y UPDATES que tendrías que montar. Puede que consuma más recursos en el motor de base de datos pero te ahorrarías infinidad de problemas.
En cambio, si de verdad necesitas eficiencia al máximo, siempre será recomendable utilizar consultas SQL para ejecutar los INSERT y UPDATES, pero tendrás que montarlo todo a mano, algo muy engorroso.
Como ya sabrás, el control enlazado a datos tiene otras muchas ventajas, puedes ponerles máscaras desde el campo en los TTables, TQuery, si el tipo de datos es numérico se realizará la comprobación o si es de fecha y algunas cosas más.
Publicado:
Vie Ene 08, 2010 4:28 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Temas de optimización Delphi y MySql
Anuncios
agustinbus escribió:
- ¿Como hago un insert mediante una consulta MySql a un ADOTable que es utilizado para ver el detalle de un ADOQuery Cliente, si el AdoTable no permite ejecutar consultas?. En este caso...
- ¿Tiene algo que ver el ADOCommand?
- ¿Puede ser utiliazado para insertar en un ADOTable?
Espero sus respuestas.
Un saludo!
En cuanto a la segunda pregunta, si te refieres a ejecutar una consulta SQL de inserción (INSERT), puedes utilizar un ADOQuery con un código como el siguiente:
Código:
procedure TfrmFactura.InsertarFacturaClick(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add ('INSERT INTO nombre_tabla (campo1, campo2)');
ADOQuery1.SQL.Add ('values ("valor 1", "valor 2"');
ADOQuery1.ExecSQL;
end;
Efectivamente, con componente TADOTable no se pueden ejecutar consultas SQL.
Con un ADOComand sí puedes ejecutar consultas SQL que no devuelvan registros, por ejemplon INSERT, para ello puedes utilizar este código:
Código:
ADOCommand1.CommandText := 'insert into prueba (campo1) values (valor)';
ADOCommand1.Execute;
Aunque el componente ADOCommand es más bien para ejecutar procedimientos almacenados y consultas de definición de datos (DDL).
Publicado:
Vie Ene 08, 2010 5:02 pm
agustinbus Excelente usuario
Registrado: Apr 17, 2009 Mensajes: 38
Asunto: Re: Temas de optimización Delphi y MySql
Anuncios
Hola alonsojpd! Muchas gracias por responder!
Cita:
En cuanto a la segunda pregunta, si te refieres a ejecutar una consulta SQL de inserción (INSERT), puedes utilizar un ADOQuery con un código como el siguiente:
Yo siempre utilicé consultas Insert para los Query yTNavigator para insertar en tablas (ya que no se pueden realizar consultas), pero ahora que me dices que para sistemas de gestion que son muy engorrosos no hay problema de utilizar control enlazado a datos voy a comenzar a hacerlo de esa manera.
Cita:
Como ya sabrás, el control enlazado a datos tiene otras muchas ventajas, puedes ponerles máscaras desde el campo en los TTables, TQuery, si el tipo de datos es numérico se realizará la comprobación o si es de fecha y algunas cosas más.
Yo utilizo mucho las mascaras para evitar errores humanos, agrego sets de datos TDatafields y les agrego mascaras en la propiedad displayformat.
Muchisimas gracias por dedicar tu tiempo a responder!
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A