pasos en la carga de una página web

14. Desarrollo de aplicaciones

14. Desarrollo de aplicaciones




 

El desarrollo de aplicaciones con bases de datos cada vez es más sencillo para los programadores. Las bibliotecas de funciones, las órdenes embebidas y otras soluciones lo hacen cada vez más sencillo y eficiente.
 

14.1 Órdenes embebidas.

 s framework y los nuevos lenguajes de programación están haciendo que la programación sea más robusta, eficiente y rápida.

La ventaja del SQL embebido es la combinación de lenguajes de alto nivel como C o C++ con las posibilidades que ofrece un lenguaje de consulta SQL. Oracle proporciona una herramienta con SQL embebido llamada Pro*C la cual es muy utilizada en ámbito empresarial por su fiabilidad y su carácter multiplataforma.

 

Los programas en Pro*C se compilan en dos fases. En la primera lo que hace el precompilador de Pro*C es transformar las órdenes o sentencias en SQL en llamadas a las funciones de las librerías propias de Pro*C. La salida de la precompilación es código C o C++ puro y duro el cual se podría compilar con cualquier compilador de C o C++. Una vez preprocesado se compila y se genera el ejecutable del programa.

 

Veamos un sencillo ejemplo de conexión a una base de datos en Pro*C:

   /* Connect to ORACLE. */

   strcpy(usuario, «SCOTT»);

   strcpy(password, «TIGER»);

   EXEC SQL WHENEVER SQLERROR DO sql_error(«ORACLE error de conexión»);

   EXEC SQL CONNECT :usuario IDENTIFIED BY :password;

   printf(«\nUsuario %s conectado con éxito\n», username);

 

Como se puede ver en el código anterior se mezclan sentencia de C con sentencias embebidas en SQL.

 

La sentencias «EXEC SQL WHENEVER SQLERROR DO sql_error(«ORACLE error de conexión»)» lo que hace es ejecutar la función sql_error en caso de que ocurra un error en las siguientes sentencias embebidas. Es normal utilizar este tipo de control de errores y excepciones en cualquier lenguaje para controlar cualquier eventualidad que pueda surgir.

 

La siguiente sentencia a ejecutar es la «SQL CONNECT» la cual realiza una conexión a Oracle típica con el usuario y password por defecto en cualquier instalación que es SCOTT/TIGER.

 

Una vez conectados a la base de datos se pueden embeber otro tipo de sentencias sql como la que figura a continuación:

 

       int matri;

       /* … */

       EXEC SQL SELECT matricula INTO :matri

                FROM alumnos

                WHERE NOMBRE=’JUAN CARLOS’ AND APELLIDOS =’MORENO PÉREZ’;

       /* … */

       printf(«El número de matrícula es: %d\n», matri);

 

Veamos un ejemplo de sentencias de borrado e inserción dentro de un programa Pro*C:

 

       /* … */

    EXEC SQL DELETE FROM alumnos WHERE matricula = :matri;

      /* … */

    EXEC SQL INSERT INTO alumnos (matricula,nombres,apellidos) VALUES

       (:MAX_MATRICULA + 1, :nom, :ape);

 

En las sentencias anteriores se puede observar cómo son sentencias normales SQL en las que se mezclan con lenguaje C.

 

14.2 Uso de bibliotecas de funciones.

 

Los lenguajes de programación generalmente vienen acompañados por una serie de funciones o librerías de funciones predefinidas las cuales realizan una serie de tareas determinadas (funciones matemáticas, funciones de red, acceso a base de datos, etc).

 

Aparte de estas librerías predefinidas es posible crear librerías y funciones de usuario las cuales generalmente están más personalizadas y son más concretas.

 

Actualmente lo más utilizado a la hora de crear programas son los Framework por las ventajas que proporcionan. Un framework no es solamente una librería de funciones sino que es algo más elaborado. Es un uso de la reutilización a gran escala para poder desarrollar aplicaciones y programas de una manera rápida y eficiente.

 

ADOdb

 

El problema que tiene PHP en el acceso a diferentes bases de datos es que no existe un estándar único. Cada API tiene una serie de funciones diferentes y por lo tanto se necesita una librería que oculte estas diferencias de tal forma que se pueda cambiar la base de datos del proyecto sin problemas (simplemente cambiando unos cuantos parámetros). ADOdb soporta MySQL, Oracle, Microsoft SQL Server, SQLite, Informix, PostgreSQL, Sybase, Sybase SQL Anywhere, FrontBase, Interbase, Foxpro, DB2, Access, ADO, SAP DB y ODBC.

 

Generalmente este tipo de librerías ofrecen como mínimo realizar sentencias básicas como SELECT, INSERT o UPDATE pero ADOdb también permite crear tablas, modificarlas, volcar datos, paginación de resultados, monitorizar el rendimiento o gestionar transacciones.

 

14.2.2 Los framework

 

Actualmente los framework están tomando relevancia porque estandarizan mucho las aplicaciones y dan solución a una serie de problemas de una forma estructurada y eficiente. Generalmente estos framework vienen acompañados de bibliotecas, programas y otro tipo de herramientas para poder desarrollar completamente un proyecto.

 

Estos framework generalmente permiten una mayor rapidez a la hora de desarrollar aplicaciones robustas y con menos código.

 

Una de las características que se pide a un framework es que sea ligero, fácil de instalar y fácil de aprender.

 

Existen framework que entre otras funciones tienen la posibilidad de realizar un interface con bases de datos de una manera mucho más sencilla que con el propio lenguaje. Por ejemplo, existe Fat-Free Framework para PHP con el cual una conexión a una base de datos SQLite sería la siguiente:

 

$db=new DB\SQL(‘sqlite:/home/usuario/alumnos.sqlite’));

 

O por ejemplo una conexión a una base de datos MySQL:

 

$db=new DB\SQL(

    ‘mysql:host=localhost;port=3306;dbname=dbalumnos’,

    ‘admin’,

    ‘mypass’

);

 

La mayor ventaja de Fat-Free Framework radica en el momento de interactuar con la base de datos. Muchas de las operaciones con la base de datos se realizan utilizando la función $f3->set(). Veamos un ejemplo de esta función:

 

$f3->set(‘result’,$db->exec(‘SELECT nombre FROM alumnos’));

echo Template::instance()->render(‘alumnos.htm’);

 

En el código anterior se puede ver cómo con la función f3 se puede acceder a los datos de la tabla alumnos de una manera fácil y la visualización es todavía más sencilla puesto que se utiliza un Template o plantilla para mostrar los datos.

 

En la segunda línea de código generaremos una plantilla HTML llamada alumnos.htm con el siguiente contenido mínimo:

 

<repeat group=»{{ @result }}» value=»{{ @item }}»>

    <span>{{ @item.alumno  }}</span>

</repeat>

 

Para ello se puede observar cómo se utiliza el array result obtenido con la función set().

 

ADO

ADO es una tecnología muy utilizada en la programación .NET. Trabaja con cuatro proveedores nativos que vienen de serie:

  • Microsoft SQL Server

  • Oracle

  • Tecnología más antigua OLE DB

  • Tecnología más antigua ODBC (Open DataBase Conectivity)

Además se pueden incorporar proveedores de terceros como DB2, MySQL, los proporcionados por el propio Oracle, etc.

14.3 Diseño de nuevos lenguajes.

 

Existen muchos nuevos lenguajes en el mercado o antiguos lenguajes que están en continua evolución. Actualmente los lenguajes tienden a utilizarse para realizar APPs para dispositivos móviles (como Java o Swift) o también para la programación web. De estos últimos hemos seleccionado PHP y Python por la relevancia que están tomando últimamente:

 

14.3.1 PHP

 

PHP es un lenguaje de programación que se ejecuta dentro del servidor como pueden ser los Servlets, JSP o ASP.

 

logo PHP

Figura logo p14.1 Logo de PHP

De todos estos lenguajes anteriores, PHP (PHP Hypertext Preprocessor) es el más utilizado puesto que con este lenguaje se han escrito muchos sistemas ampliamente utilizados como WordPress, Joomla, etc. También Facebook está escrito en este lenguaje lo que muestra lo potente y eficiente que puede llegar a ser.

 

El funcionamiento de un programa en PHP que accede a una base de datos MySQL (generalmente PHP está muy integrado con MySQL pero podría ser cualquier base de datos del mercado) sería el siguiente:

 

pasos en la carga de una página web

Figura 14.2 Pasos en la carga de una página PHP

 

  • Paso 1. El cliente (navegador o browser) pide al servidor la página web (myfpschool.php). Si tenemos instalado el XAMPP será el servidor web Apache el que recibirá la petición.

  • Paso 2. Una vez recibida la petición el servidor web localiza la página myfpschool.php en su espacio de almacenamiento y la examina por si tuviese código ejecutable de la parte servidor.

  • Paso 3. En caso afirmativo, dado que es una página PHP la envía al servidor PHP para que la interprete.

  • Paso 4. El servidor PHP interpreta el código y examina si los script acceden a base de datos. Si el código PHP accede a base de datos se envían las sentencias SQL al gestor de base de datos (previamente se ha tenido que establecer una conexión con el SGBD).

  • Paso 5. El SGBD ejecuta las sentencias SQL y envía los resultados al servidor PHP.

  • Paso 6. El servidor PHP termina de interpretar el código PHP y le devuelve el resultado HTML al servidor web.

  • Paso 7. El servidor web devuelve el código HTML al cliente (navegador).

14.3.2 Python

 

logo de python

Figura 14.3 Logo de Python

 

Python es un lenguaje con una sintaxis sencilla lo que lo hace fácil de aprender. Es un lenguaje interpretado con lo cual necesita para ejecutarse el intérprete Python.

 

Como los lenguajes más modernos soporta la orientación a objetos. También es un lenguaje multiplataforma y de código abierto con licencia Python Software Foundation License (compatible con la licencia pública general GNU).

 

Veamos el código en Python para conectarnos a una base de datos MySQL:

 

import MySQLdb

DB_HOST = ‘localhost’
DB_USER = ‘root’
DB_PASS = ‘contrasenia’
DB_NAME = ‘alumnos’

def run_query(query=»):
datos = [DB_HOST, DB_USER, DB_PASS, DB_NAME]

conn = MySQLdb.connect(*datos) #

 

En el código anterior se puede observar como primeramente se importa la librería MySQLdb para poder interactuar con la base de datos y posteriormente mediante la función MySQLdb.connect nos conectamos a la base de datos proporcionándole los parámetros necesarios.

 

Veamos también cómo se ejecutaría una sentencia de selección en Python:

 

consulta = «SELECT nombre,apellidos FROM alumnos ORDER BY apellidos DESC»
resultado = run_query(consulta)
print resultado

 

Como se puede observar, el código anterior es muy intuitivo y fácil de seguir.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.