Crear un servicio de base de datos MS SQL sin servidor en Microsoft Azure y desarrollar aplicación Windows con acceso nativo a la base de datos Azure con el IDE Delphi 12 y FireDAC.

Requisitos para crear BD SQL en Azure y desarrollo de aplicación Windows en Delphi 12

Para la creación de la base de datos en Azure necesitaremos una licencia o una versión de evaluación. Para este tutorial usaremos una versión free de MS SQL en Azure.

Para el desarrollo de una aplicación Windows con acceso a la base de datos Azure con Delphi, necesitaremos el IDE de desarrollo de Delphi, pudiendo usar la versión free de Delphi Community. En el siguiente tutorial explicamos cómo instalar el IDE Delphi Community Edition (Delphi CE):

Crear base de datos SQL en Microsoft Azure

Accederemos a Microsoft Azure con una cuenta de Microsoft. En este caso, hemos elegido usar una oferta de base de datos free, por lo que nos asignará una licencia gratuita para crear una base de datos SQL Server. Introduciremos los datos (crearemos el grupo de recursos y el servidor) y estableceremos los datos de acceso (usuario y contraseña), así como el nombre de la base de datos:

Microsoft Azure nos indicará que la base de datos ha sido creada correctamente:

Una vez creada la base de datos Microsoft SQL Database en Azure, configuraremos un acceso externo, permitiendo únicamente la IP pública de nuestra organización. Para ello pulsaremos en «Seguridad» [1], en «Redes» [2] y marcaremos la opción «Redes seleccionadas» [3]. Pulsaremos en «Agregar la dirección IPv4 del cliente (…)» [4]:

Agregaremos una nueva regla permitiendo el acceso a la base de datos SQL de Azure desde nuestra IP pública:

Se creará la regla correspondiente en nuestro cortafuegos de Azure:

Crear una tabla en la base de datos SQL Server de Azure

Para crear una tabla en la base de datos e insertar algún registro, a modo de ejemplo, usaremos Visual Studio .Net, por lo que tendremos que tenerlo instalado en nuestro equipo, como indicamos en este tutorial. Desde la base de datos de Azure, pulsaremos en «Abrir Visual Studio»:

Pulsaremos en «Abrir» en el aviso de seguridad del navegador:

Se abrirá Visual Studio y nos mostrará una ventana de conexión a la base de datos de Azure. Introduciremos los datos de conexión (casi todos aparecerán ya rellenados). Una vez introducidos los datos, pulsaremos en «Conectar»:

Visual Studio conectará con la base de datos de Azure. Para crear una tabla de ejemplo, desplegaremos nuestra base de datos (bdproyectoa) y pulsaremos con el botón derecho sobre «Tablas», eligiendo «Agregar nueva tabla…»:

Añadiremos los campos para la tabla «facturas», como ejemplo agregaremos:

  • codigo: de tipo int.
  • cliente: de tipo nchar(150).
  • importe: de tipo money.
  • fecha: de tipo date.

El asistente para crear una nueva tabla nos mostrará el SQL que se ejecutará:

Modoficaremos el SQL para agregar el atributo IDENTITY(1,1) al campo «codigo», para que sea autoincremental:

Pulsaremos en «Actualizar»:

Pulsaremos en «Actualizar base de datos» para aplicar los cambios en la BD Azure:

Nos mostrará el progreso y el resultado de la ejecución de la consulta SQL:

Y la tabla «facturas» se habrá creado en nuestra base de datos Azure:

Añadiremos algunos registros a modo de ejemplo a la tabla «facturas»:

Crear aplicación Windows con acceso nativo a BD SQL Azure con Delphi 12

Crearemos un nuevo proyecto en Delphi 12 de tipo «Windows VCL Application – Delphi»:

Para realizar la conexión a la BD de Azure en tiempo de diseño y para generar los componentes de acceso a datos de forma automática, estableceremos la conexión a la BD SQL de Azure desde Delphi usando Data Explorer. Pulsaremos en «Data Explorer» [1], desplegaremos «FireDAC» [2], pulsaremos con el botón derecho del ratón sobre «Microsoft SQL Server» [3] y elegiremos «Add New Connection» [4]:

Introduciremos un nombre para la conexión a la BD SQL Azure, por ejemplo «bdproyectoa»:

Introduciremos los datos de conexión para el driver MSSQL, en este caso:

  • Database: bdproyectoa.
  • User_Name: alonso.
  • Password: contraseña.
  • Server: srvproyectoa.database.windows.net.

Pulsaremos en «Test» para comprobar la conexión:

Nos mostrará la ventana de Login, pulsaremos «OK»:

Si la conexión es correcta, mostrará el mensaje «Connection established successfully»:

Desde la pestaña «SQL Script» podremos añadir un SQL para mostrar la tabla «facturas»:

Arrastraremos la tabla «bdproyectoa.dbo.facturas» al formulario:

Y nos creará, de forma automática, dos componentes no visuales de acceso a datos, ya configurados para el acceso a nuestra BD Azure:

  • TFDConnection: para la conexión con la base de datos SQL Azure.
  • TFDQuery: para la gestión de la tabla facturas.

Añadiremos un componente TDataSource, para enlazar el componente TFDQuery con los componentes visuales. Este componente se enlazará con el TFDQuery mediante su propiedad «DataSet»:

Añadiremos un componente visual TDBGrid, que enlazaremos con el TDataSource mediante su propiedad «DataSource»:

Si queremos probar los componentes y la conectividad, cambiaremos la propiedad «Connected» del TFDConnection a True:

Y la propiedad «Active» del TFDQuery a True:

Si compilamos la aplicación (pulsando F9) comprobaremos que tenemos acceso a la BD Azure y, además, nos mostrará los registros de la tabla «facturas» y sus campos:

Agregaremos un componente visual TDBNavigator, que enlazaremos con la tabla «facturas» mediante su propiedad «DataSource»:

Si volvemos a compilar la aplicación, podremos añadir registros, eliminar registros y modificar registros:

Todo ello sin haber agregado código a nuestra aplicación, una de las maravillas de Delphi 12.

Los cambios realizados en nuestra aplicación Windows realizada en Delphi quedarán reflejados en la BD de la nube de Azure:

Evidentemente, en el desarrollo de una aplicación de producción deberemos establecer los parámetros de conexión (al menos la contraseña del usuario) en tiempo de ejecución, obteniéndola cifrada de un fichero de configuración o del registro del sistema. En este caso, añadiremos al evento OnCreate el siguiente código Delphi/Pascal para establecer la conexión con el servidor de BD SQL de Azure: