Club Delphi  
    Paypal   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

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 12-02-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Poder: 3
navbuoy Va por buen camino
En FireDAC, la llamada a ApplyUpdates() solo es necesaria si usas un componente TFDTable o TFDQuery con un CachedUpdates activo. Si estás ejecutando una consulta INSERT, UPDATE o DELETE directamente con ExecSQL(), no necesitas ApplyUpdates(), ya que los cambios se aplican inmediatamente en la base de datos.

Cuándo usar ApplyUpdates()
Debes usar ApplyUpdates() solo si estás trabajando con datos en memoria antes de enviarlos a la base de datos. Esto ocurre cuando:

TFDQuery->CachedUpdates = true
TFDTable->CachedUpdates = true
TFDMemTable está en uso y necesita sincronizarse con la base de datos.

Ejemplo con CachedUpdates
Si tienes un TFDQuery con CachedUpdates = true, los cambios se almacenan en memoria y debes hacer esto para aplicarlos:

Código:
void GuardarEnBD() {
    try {
        FDConnection1->StartTransaction();  // Inicia la transacción

        FDQuery1->Post();  // Guarda los cambios en el buffer en memoria
        FDQuery1->ApplyUpdates();  // Aplica los cambios en la BD
        FDConnection1->Commit();  // Confirma la transacción

    } catch (Exception &e) {
        FDConnection1->Rollback();  // Revierte en caso de error
        ShowMessage("Error: " + e.Message);
    }
}
Si usas ExecSQL(), no necesitas ApplyUpdates()
Cuando ejecutas una consulta directa (ExecSQL()), la actualización se realiza inmediatamente en la BD, por lo que este código NO necesita ApplyUpdates():

Código:
void ActualizarPrecio() {
    try {
        FDConnection1->StartTransaction(); 

        FDQuery1->SQL->Text = "UPDATE productos SET precio = precio * 1.10 WHERE categoria = 'electronica'";
        FDQuery1->ExecSQL();  

        FDConnection1->Commit();  

    } catch (Exception &e) {
        FDConnection1->Rollback();
        ShowMessage("Error: " + e.Message);
    }
}
Responder Con Cita
 



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
Proyecto, Monitoreo y Optimizacion de nuestra BD en Firebird felipe88 Firebird e Interbase 35 07-05-2011 02:02:43
Pasar proyecto de D.2007 a D.7 Dado de baja Varios 10 22-10-2008 00:33:08
FireBird, Proyecto del mes Diciembre/2007 en SourceForge jhonny Noticias 2 04-12-2007 01:15:47
Cómo pasar mi proyecto WWW para el servidor... Lester .NET 0 08-02-2007 18:35:10


La franja horaria es GMT +2. Ahora son las 07:32:42.


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