Colección de citas famosas - Slogan de motivación - Curso básico de Delphi: desarrollo de aplicaciones cliente servidor DELPHI (3) [3]

Curso básico de Delphi: desarrollo de aplicaciones cliente servidor DELPHI (3) [3]

Método GetDatabaseNames

Procedimiento de declaración getdatabasenames(list:tstrings)

El método GetDatabaseNames borra el contenido de la lista y escribe los nombres de todos los alias BDE y alias definidos por la aplicación en la lista.

Método GetDriverNames

El proceso de declaración obtiene el nombre del controlador (lista: tstrings)

El método GetDriverNames borra el contenido de la lista y reemplaza el nombre del Los nombres del controlador instalado actualmente por BDE se escriben en la lista.

Método GetDriverParams

Proceso de declaración get driver pams (const driver name: string; list: t string)

El método GetDriverParams borra el contenido de la lista y Los parámetros predeterminados para el controlador denominado DriveName se escriben en la lista.

Método GetTableNames

Procedimiento de declaración para obtener nombres de tablas (modo de nombre de base de datos constante: cadenas

Tabla del sistema extendida: booleana; lista: t cadena)

< El El método p>GetTableNames elimina el contenido de la lista y escribe los nombres de todas las tablas en la base de datos denominada DatabaseName en el parámetro del modo de lista, que restringe los nombres de las tablas. Para servidores SQL, configurar las tablas del sistema en True obtendrá tablas del sistema y tablas de usuario. Para bases de datos que no sean SQL, configurar Extensiones en Verdadero incluirá la extensión en el nombre de la tabla.

Manejo del control de transacciones cliente/servidor

Hay dos formas de gestionar el control de transacciones en una aplicación de base de datos, utilizando control implícito y control explícito.

●Utilice las propiedades y métodos del componente TDatabase para un control explícito.

●Utilice el SQL transitivo del componente TQuery para controlar las transacciones.

Delphi también soporta el procesamiento de transacciones locales de tablas Paradox y dBASE.

Descripción general del control de transacciones

Al crear una aplicación de base de datos con Delphi, Delphi proporciona control de transacciones para todos los accesos a la base de datos.

Una transacción es un conjunto de operaciones en una o más bases de datos que deben ejecutarse exitosamente antes de confirmarse. Si una de las operaciones falla, todas las operaciones fallan, es decir, la transacción es atómica.

Incluso si se produce un fallo de hardware, se debe garantizar la coherencia de la base de datos. Las transacciones también mantienen la integridad de los datos cuando permiten el acceso simultáneo de varios usuarios.

Por ejemplo, una aplicación podría actualizar la tabla PEDIDOS para indicar que está aceptando pedidos para un determinado artículo, por lo que también debería actualizar la tabla Innertory para reflejar una disminución en el inventario. Si se produce un error de hardware después de la primera actualización pero antes de la segunda, la base de datos estará en un estado inconsistente porque la situación del inventario no refleja la situación del pedido. Bajo el control de transacciones, se confirman dos expresiones al mismo tiempo y, si una expresión falla, se revierte.

Uso del control implícito

De forma predeterminada, Delphi proporciona control de transacciones implícito para aplicaciones a través de BDE. Cuando una aplicación está bajo control de transacciones implícitas, Delphi realiza un control de transacciones implícito en cada registro escrito en el conjunto de datos. Confirma cada operación de escritura individual, como Publicar y Agregar registro.

Control de transacciones implícito fácil de usar, lo que garantiza conflictos mínimos en las actualizaciones de registros y una vista consistente de la base de datos. Por otro lado, dado que cada fila de datos escrita en la base de datos requiere control de transacciones, el control de transacciones implícito puede hacer que la red esté demasiado ocupada y que el rendimiento de la aplicación se degrade.

Si utilizamos control de transacciones explícito, podemos elegir el momento más efectivo para comenzar a confirmar y finalizar transacciones, especialmente en el desarrollo de entornos multiusuario donde se ejecutan aplicaciones cliente y acceden a servidores SQL remotos.

Uso del control explícito de transacciones

Hay dos formas de controlar las transacciones en aplicaciones de bases de datos Delphi, una es cooperativa y la otra es independiente.

●Utilice los métodos y propiedades del componente TDatabase.

●El uso de SQL transitivo en el componente TQuery sólo es válido en la versión Delphi Client/Server Suite. Los enlaces SQL transfieren expresiones SQL directamente a servidores SQL u ODBC en proceso.

La ventaja de utilizar los métodos y propiedades del componente TDatabase es que proporciona una funcionalidad de aplicación clara y portátil que es independiente de una base de datos o servidor específico.

La principal ventaja de utilizar SQL transitivo es que puedes utilizar las funciones avanzadas de gestión de transacciones de un servidor específico.

Uso de los métodos y propiedades de TDatabase

La siguiente tabla enumera los métodos y propiedades utilizados para la gestión de transacciones en el widget TDatabase y su uso.

La tabla t es una tabla de métodos de base de datos que se utiliza para controlar explícitamente las transacciones

━━━━━━━━━━━━━━━━━━━━━━━━

¿Método o atributo? Uso

───────────────────────────────────

para confirmar la modificación de datos y finalizar la transacción.

Rollback cancela las modificaciones de datos y finaliza la transacción.

StartTransaction inicia la transacción.

TransIsolation representa el nivel de independencia de la transacción.

━━━━━━━━━━━━━━━━━━━━━━━━

La aplicación llama a la confirmación y reversión de StartTransaction en tiempo de ejecución Método para iniciar una transacción de control de transacciones y guardar o descartar modificaciones de datos.

TransIsolation es una propiedad del componente TDatabase, utilizada para controlar cómo interactúan las diferentes transacciones que actúan en la misma tabla.

(1) Inicio

Cuando inicia una transacción, todas las expresiones posteriores que se leen y escriben en la base de datos ocurren dentro del contexto de esa transacción. Cada expresión es parte de ello. Cualquier modificación realizada por cualquier expresión se confirma correctamente en la base de datos o se cancela cada modificación. Consideremos el problema de las transferencias bancarias en los cajeros automáticos. Cuando un cliente decide transferir fondos de una cuenta de depósito a una cuenta de pago, se deben realizar dos modificaciones en los registros de la base de datos del banco.

●La cuenta de depósito debe ser debitada.

●Se debe acreditar la cuenta de pago.

Si una de las operaciones no se puede completar por algún motivo, entonces ninguna de las operaciones debería ocurrir porque estas operaciones están relacionadas y deberían ocurrir en la misma transacción.

Para iniciar una transacción en una aplicación Delphi, necesita llamar al método StartTransaction en el componente TDatabase.

transacción de inicio entre bases de datos;

Todas las operaciones de datos posteriores ocurren en el contexto de la última transacción hasta que la transacción finaliza explícitamente llamando a Commit o Rollback.

Entonces, ¿cuánto tiempo deberíamos seguir operando? Idealmente, cuanto más tiempo permanezca activa una transacción durante el tiempo necesario, más usuarios accederán a la base de datos simultáneamente. Durante la vida de una transacción, hay más transacciones simultáneas que comienzan y finalizan al mismo tiempo, por lo que existe una mayor posibilidad de conflictos con otras transacciones al intentar confirmar cambios.

(2) Enviar transacción

Para realizar modificaciones permanentes, se debe utilizar el método de confirmación del componente TDatabase para enviar la transacción. La expresión de confirmación guarda las modificaciones de la base de datos y finaliza la transacción. Por ejemplo, la siguiente expresión finalizará la transacción iniciada en el ejemplo anterior.

Confirmación entre bases de datos

La llamada de confirmación debe colocarse en una expresión try...except. Si la transacción no se puede confirmar con éxito, puede manejar el error y volver a intentar la operación.

(3)Revertir una transacción.

Para cancelar las modificaciones de la base de datos, la transacción debe deshacerse mediante el método rollback. La reversión restaura las modificaciones de la transacción y finaliza la transacción. Por ejemplo, la siguiente expresión revertirá una transacción.

Revertir entre bases de datos;

La reversión generalmente ocurre en

●Código de manejo de excepciones

●Código de evento de menú o botón, como The El usuario hizo clic en el botón cancelar.

(4) Utilice el atributo TransIsolation.

El atributo TransIsolation describe el nivel de independencia de la transacción del componente TDatabase. El nivel de independencia de una transacción determina cómo interactúa una transacción con otras transacciones en la misma tabla. Antes de cambiar o configurar el valor de TransIsolation, debe estar familiarizado con las transacciones y la gestión de transacciones en Delphi.

El valor predeterminado de TransIsolation es tiReadCommitted. La siguiente tabla resume los posibles valores entre aislamientos y describe su significado.

El significado del valor del atributo TransIsolation de la tabla

━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━ ━━━━━━━━

Significado de nivel independiente

─────────────────────── ─ ─────────────

TiDirtyRead permite leer modificaciones no confirmadas escritas en la base de datos por otras transacciones concurrentes. Los cambios no confirmados no son permanentes y pueden revertirse en cualquier momento. En este nivel, su transacción es menos independiente de las modificaciones realizadas por otras transacciones.

TiReadCommitted solo permite leer modificaciones de la base de datos confirmadas por otras transacciones simultáneas. Este es el nivel independiente predeterminado.

IRepeatableRead permite que una única transacción de lectura de base de datos vea los cambios realizados en los mismos datos por otras transacciones simultáneas. Este nivel de independencia garantiza que su transacción lea un registro a la vez y que la vista del registro no cambie. En este nivel, su transacción es completamente independiente de los cambios realizados por otras transacciones.

pag >

Varios servidores de bases de datos admiten estos niveles de independencia en distintos grados, y algunos no los admiten en absoluto. Si el servidor no admite el nivel de aislamiento solicitado, Delphi adoptará el nivel de aislamiento más alto. Consulte la siguiente tabla para conocer los niveles de independencia admitidos por varios servidores.

Si la aplicación utiliza ODBC para interactuar con el servidor, el controlador ODBC debe admitir el nivel de independencia.

Uso de SQL transitivo

Para utilizar SQL transitivo para controlar cosas, debe

● utilizar la suite cliente/servidor Delphi.

●Instale el controlador SQL Links correcto.

●Configurar el protocolo de red correctamente.

●Capacidad de acceder a bases de datos en servidores remotos.

● Configure el modo SQLPASSTHROUGH para que no se comparta con la herramienta de configuración BDE.

SQL transitivo le permite enviar expresiones de control de transacciones SQL directamente al servidor de base de datos remoto BDE utilizando los componentes TQuery TStoredProc o TUpdateSQL. BDE en sí no maneja expresiones SQL. El uso de SQL transitivo permite a los usuarios aprovechar directamente el servidor SQL, especialmente cuando el control no es estándar.

SQL PASS THROUGHMODE describe si BDE y SQL transitivo * * * comparten la misma conexión de base de datos. En la mayoría de los casos, SQLPASSTHROUGHMODE está configurado en AUTOMITACIÓN COMPARTIDA. Sin embargo, si desea transferir el control de transacciones SQL al servidor, debe utilizar la herramienta de configuración de BDE para configurar SQLPASSTHROUGHMODE de BDE en NO COMPARTIDO. Además, se debe crear un componente TDatabase independiente para el componente TQuery que transmite expresiones de control de transacciones SQL.

Uso de transacciones locales

BDE también admite transacciones locales en Paradox y dBASE. Desde la perspectiva del código, no hay diferencia entre transacciones locales y transacciones en el servidor de base de datos remoto.

Las operaciones de actualización se registran en el registro cuando comienza una transacción para una tabla de base de datos local. Cada registro de registro contiene un búfer de registros antiguos. Mientras una transacción está activa, los registros actualizados se bloquean hasta que la transacción se confirma o se revierte. Durante una reversión, la aplicación de registros antiguos restaura los registros actualizados a su estado original.

Uso de procedimientos almacenados

Descripción general del componente TStoredProc

Un procedimiento almacenado es un programa basado en un servidor de base de datos que acepta parámetros de entrada y devuelve resultados a la aplicación. El componente TStoredProc opera con procedimientos almacenados en una base de datos en un servidor remoto. Un procedimiento almacenado es una colección de expresiones. Como parte del servidor, los procedimientos almacenados realizan una serie de tareas repetitivas relacionadas con la base de datos en el servidor y transfieren los resultados a una aplicación cliente, como una aplicación de base de datos Delphi.

El componente TStaredProc permite que las aplicaciones de bases de datos Delphi ejecuten procedimientos almacenados en el servidor.

Las operaciones que normalmente operan en una gran cantidad de registros en una tabla de base de datos y utilizan funciones estadísticas o matemáticas son la primera opción para los procedimientos almacenados. Al descargar estas tareas informáticas repetitivas al servidor, se puede mejorar el rendimiento de las aplicaciones de bases de datos.

● Aprovecha al máximo la potencia y velocidad de procesamiento del servidor.

●Reducir el número de transmisiones de red.

Por ejemplo, considere una aplicación que requiere calcular la desviación estándar de un único valor en una gran cantidad de registros. Si esta función se ejecuta en una aplicación Delphi, todos los registros utilizados en el cálculo deben obtenerse del servidor, lo que inevitablemente causará congestión de la red, porque todo lo que la aplicación necesita es el valor de retorno final que representa la desviación estándar, por lo que es más eficiente para que los procedimientos almacenados lean los datos, realicen cálculos y pasen los valores a la aplicación.

Lishi Xinzhi/Article/program/Delphi/201311/25131