¿Cuál es la forma preferible de escribir aplicaciones de bases de datos Delphi usando transacciones y también componentes con capacidad de datos?Forma preferible de escribir aplicaciones de bases de datos Delphi con transacciones y componentes con capacidad de datos
Tengo que escribir una aplicación de cliente que acceda a las tablas de InnoDB, y hacer algunos detalles de tipo de cosas dentro de las transacciones. Después de investigar un poco sobre las transacciones (desde un punto de vista general), humildemente llegué a la conclusión de que los componentes que no tienen en cuenta los datos y el código codificado a mano serían la "combinación perfecta" de las transacciones; Pero los componentes con capacidad de datos no lo serían. No parecen estar hechos el uno para el otro.
Tengo la necesidad real de usar transacciones, pero, por otro lado, no podía tirar los componentes que tienen en cuenta los datos porque simplifican enormemente las cosas.
¿Podría alguien por favor aclararme? He estado buscando en Google, pero no he encontrado ninguna respuesta útil. Tal vez porque mi inglés no es lo suficientemente bueno como para que mis palabras clave sean limitadas.
BTW, estoy usando Delphi 7 y actualmente estoy evaluando a UniDAC como la biblioteca de acceso a datos.
Gracias.
EDITAR
ejemplo para describir un aspecto de mi pregunta: ¿
imaginar un formulario con 2 DBGrids en él. La primera cuadrícula es MasterGrid y encima están estos botones: Agregar, Editar & Eliminar. La segunda grilla es DetailGrid. Si el usuario hace clic en Agregar, a continuación, ir de esta manera:
- Connection.StartTransaction
- Master.Append continuación Master.Post continuación Master.Edit (por lo que el conjunto de datos principal tiene la clave principal incremento automático, y es editable ahora)
- Muestra el formulario de edición de manera modal, en el que el usuario llena los registros maestros, y también agrega algunos registros de detalles usando otro formulario.
- Si el usuario hace clic en Aceptar, la aplicación haría Master.Post y Connection.Commit. Si el usuario hace clic en Cancelar, entonces la aplicación haría Connection.Rollback.
Sé que las transacciones deben ser lo más breves posible, pero puede ver arriba que la transacción es tan corta como la velocidad del usuario que completa el formulario.
Si estuviera usando componentes que no tengan en cuenta los datos, haría los SQL de inserción personalizados basados en la entrada del usuario, y luego ejecutaría el SQL entre StartTransaction y Commit. Entonces puedo lograr transacciones muy cortas.
EDIT 2
Gracias a todos ustedes por su amable participación. Escojo la respuesta de vcldeveloper porque es la solución más cercana a mi necesidad actual.
Hola, COCIN. Bienvenido a StackOverflow. Tu pregunta no es particularmente clara. ¿Qué problemas tiene al hacer que los controles y las transacciones con datos funcionen entre sí? ¿Puedes editar tu pregunta para proporcionar más detalles? –
¿Por qué dices que los componentes que tienen en cuenta los datos no son buenos para las transacciones? Las transacciones generalmente se manejan en el nivel de sesión de la base de datos; si los comandos DML provienen de SQL hecho a mano o no, eso hace poca diferencia. –