Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ventana de Busqueda (https://www.clubdelphi.com/foros/showthread.php?t=78475)

mightydragonlor 23-04-2012 18:57:55

Cita:

Empezado por roman (Mensaje 430703)
Gracias. Entonces, ¿lo recomendado es llenar la base de procedimientos almacenados e invocarlos desde la aplicación cliente?

// Saludos

Actualmente es lo que hago, estoy haciendolo en Oracle, MS-SQL y Firebird, con muy buenos resultados, teniendo una ventaja adicional al rendimiento, cuando debo hacer un cambio en la lógica del procedimiento almacenado, sin cambiar parámetros de entrada y salida, no tengo que generar ningún cambio en el programa =)

Delphius 23-04-2012 19:16:45

Cita:

Empezado por roman (Mensaje 430703)
Gracias. Entonces, ¿lo recomendado es llenar la base de procedimientos almacenados e invocarlos desde la aplicación cliente?

// Saludos

No me atrevería a asegurar que todas las consultas se llevaran a un procedimiento almacenado y/o vistas en el lado servidor como para utilizar tan libre la palabra "llenar" pero... en lo posible yo diría que hay que dejarle al motor las cosas que sabe hacer bien.

Y justamente si tienes consultas estáticas, que no vas a cambiar nunca (*) en la aplicación y que se va a estar lanzando cada x segundos en varios puestos, es mejor dejarla ya preparada y servida en el servidor e invocar a las vistas y/o procedimientos almacenados.

(*) No al menos hasta que venga un cambio en los requisitos, restricciones y/o en el rediseño o proceso de reingeniería para la aplicación.

Esto lleva también otra ventaja extra: hace más seguro nuestro al sistema y reduce también los peligros de una injección de código (a menos claro que el usuario tenga plena libertad de mandar a hacer lo que se le ocurra).

Yo al menos soy creyente de disponer vistas. Me resulta mucho más claro.

Saludos,

mightydragonlor 23-04-2012 19:21:09

Lo que dice Delphius es muy cierto, hay caso en que los requisitos necesitan que hagas algo demasiado flexible y debas hacerlo en la aplicación y no tenga cabida en una vista o sp, hasta el momento no me he topado con ninguno, todo siempre lo mandamos a sps y vistas xD

Caminante 23-04-2012 19:21:29

Bueno lo que yo hago en esos casos es poner el codigo de busqueda en una funcion de clase (class function)

Código Delphi [-]
class function TfrmBusqueda.Buscar(DatoaBuscar:string;Var ID:integer):boolean;

En el parametro de salida retorno el codigo encontrado.
La llamada quedaria asi:

Código Delphi [-]
If TfrmBusqueda.Buscar(MIparametro,I) then
//Trabajar con el retorno (el parametro I)


Disculpa si no soy mas explicito pero es q de momento no tengo delphi a mano.

Espero te sirva

Saludos

PepeLolo 24-04-2012 23:50:49

En mi caso todas las consultas para explotación de información las almaceno en la BBDD. Así no hay que generar nuevas versiones de la aplicación. Si es necesario un SP para a consulta, se crea y es transparente para el usuario, en pocos minutos o en muchos.... Depende de la complejidad, el usuario dispone de una consulta que hará uso de (SQL, SP o Vistas) :D

PepeLolo 24-04-2012 23:55:53

Para evitar la inyección de SQL, uso parámetros para los valores, identificando el tipo de parámetro esperado previamente. Por cierto esto incrementa la velocidad de preparación de SQL.


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

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