Ejecutar Stored procedures de Mysql con Delphi y ADO

Como vimos en una entrada anterior crear procedimientos almacenados en Mysql es muy sencillo y tiene grandes ventajas el hacer uso de ellos. Ahora bien ya que sabemos crearlos vamos a ejecutar un procedimiento almacenado desde Delphi. Para ello haremos uso de ADO, aunque aquí cabe mencionar que existen tecnologías de acceso como Zeos, Dbexpress o MyDac las cuales son excelentes alternativas para conectarse a Mysql, para este artículo he decidido usar ADO.

Para poder conectarnos con Ado a Mysql será necesario descargar del sitio de Mysql el driver ODBC que a la fecha en que escribo este artículo está en la versión 5.2.2. En esta página  Mysql Downloads Odbc   encontrarás la lista de los instaladores para 64 y 32 bits tanto para Windows como para Linux, Solaris, Mac OS, etc.  Si como en mi caso usas Windows x86 entonces seleccionaremos el archivo mysql-connector-odbc-5.2.2-win32.msi.

Una vez que hayamos descargado el driver ODBC procederemos a instalarlo. Para ello el procedimiento a seguir es muy simple. Ejecutamos el instalador y la pantalla de bienvenida nos dirá lo que estamos por instalar, presionamos siguiente y al llegar a la pantalla dónde nos pregunta el tipo de instalación dejaremos seleccionado “Typical” después presionaremos siguiente hasta finalizar el asistente y así la instalación del controlador.

Como podemos ver en las siguientes imágenes el proceso de instalación del controlador ODBC es un procedimiento muy sencillo.

       

 

Ya instalado nuestro driver ODBC, el siguiente paso es crear un Dsn para ello abriremos el administrador de orígenes de datos que se encuentra en “Panel de control / Herramientas administrativas / Orígenes de datos ODBC” Al abrirlo se nos presentan múltiples pestañas de las cuales elegiremos  Dsn de sistema, y eso lo haremos para permitir que nuestro DSN pueda ser usado por cualquier usuario registrado en nuestro sistema.

 

 

En esta pestaña del administrador de orígenes es dónde podremos configurar los datos necesarios para que nuestras aplicaciones puedan conectarse al Servidor Mysql. Daremos Click en “Agregar” para comenzar con el proceso de configuración.

 

 

 

 

 

 

Al iniciar el proceso de configuración el asistente nos muestra una lista de controladores. De la lista seleccionaremos Mysql ODBC 5.2w Driver y presionaremos “Finalizar” para dirigirnos a la pantalla de configuración.

 

 

 

 

 

En esta pantalla vamos a configurar la conexión a nuestro servidor Mysql proporcionando la siguiente información:

  • DataSourceName: “MyLocalDb”.  Nombre descriptivo de nuestro origen de datos
  • Description: “Servidor Mysql Local”. Descripción de nuestro origen de datos}
  • Tcp/Ip Server: “localhost”. Aquí es válido colocar una dirección ip o el nombre del servidor donde está instalado el servidor de base de datos Mysql. En caso de ser un servidor local podemos colocar Localhost. Si deseas conocer la IP de tu servidor puedes ejecutar el comando IpConfig en la consola de comandos y podrás obtener la dirección IP del servidor.
  • User: “root”. Usaremos el usuario administrador en este artículo.
  • Password: “********”. Aquí deberás colocar el Password de tu usuario.
  • Database: “pruebas”. Base de datos por default a la que nos conectaremos. Este campo puedes dejarlo en blanco si así lo deseas.

Una vez que hemos establecido los datos de conexión a nuestro servidor presionaremos “OK” y nuestro nuevo origen de datos aparecerá en el listado de la pestaña “Dsn de sistema”

 

 

El siguiente paso a realizar es conectarnos desde Delphi a Mysql para ejecutar el procedimiento almacenado que creamos en la entrada “crear procedimientos almacenados en Mysql“. Ejecutaremos nuestro Delphi, en mi caso será Delphi 2010 pero lo aquí expuesto aplica para cualquier versión D7 en adelante.

Ya que ejecutemos nuestro Delphi, crearemos una nueva aplicación Vcl Forms (“File / New / Vcl Forms Application”) colocaremos en el formulario principal un control DbGrid, un TAdoAconnection, TAdoStoredProc, TDataSource y un botón. Después control por control vamos a definir sus propiedades de la siguiente manera:

AdoConnection1

ConnectionString: “Provider=MSDASQL.1;Persist Security Info=False;Data Source=MyLocalDb”

LoginPrompt: “False”

AdoStoredProc1

Connection: “ADOConnection1”

DataSource1

Dataset: “ADOStoredProc1”

Dbgrid1

DataSouce: “DataSource1”

BitBtn1:

Caption: “Ejecuta Sp”

Ya que hemos configurado nuestros componentes vamos a escribir el código necesario para ejecutar nuestro procedimiento almacenado y mostrar el resultado en el DbGrid. Daremos doble Click en el botón para colocarnos en el editor de código y escribiremos:

procedure TForm3.BitBtn1Click(Sender: TObject);
begin
  //Establecemos el nombre del procedimiento almacenado a ejecutar
  ADOStoredProc1.ProcedureName := 'PRUEBAS.SP_DAMENOMBREUSUARIO';
  //CReamos los parámetros de entrada definidos por el procedimiento almacenado:
  ADOStoredProc1.Parameters.CreateParameter('USERNAME',ftString,pdInput,10,'');
  //establecemos el valor del parámetro username
  ADOStoredProc1.Parameters.ParamByName('USERNAME').Value := 'usu1';
  //ejecutamos el procedimiento almaceando con Open ya que nos devuelve un recordset
  ADOStoredProc1.Open;
end;

Que como recordarán de una entrada anterior ejecuta el siguiente procedimiento almacenado:

CREATE PROCEDURE SP_DAMENOMBREUSUARIO
       (
         USERNAME VARCHAR(10) -- PARÁMETRO DE ENTRADA
       )
Begin

   Select *
     from (
            select 'usu1' usuario, 'nombre1' Nombre, 'paterno1' Paterno, 'materno1' Materno
            union
            select 'usu2' usuario, 'nombre2' Nombre, 'paterno2' Paterno, 'materno2' Materno
            union
            select 'usu3' usuario, 'nombre3' Nombre, 'paterno3' Paterno, 'materno3' Materno
            union
            select 'usu4' usuario, 'nombre4' Nombre, 'paterno4' Paterno, 'materno4' Materno
           ) As usuarios
     where usuario = USERNAME;
End;

Ya que hemos escrito el código que ejecuta el procedimiento almacenado, compilamos y ejecutamos nuestro proyecto. Al ejecutarse daremos Click en el botón “Ejecuta Sp” y obtendremos el siguiente resultado:

Como pueden ver, ejecutar procedimientos almacenados de mysql desde nuestras aplicaciones Delphi usando ADO y ODBC es sumamente sencillo y además eficiente ligado claro a buenas prácticas de desarrollo de software.

¿Dudas? En Delphi Access con gusto las resolveré.

¿Comentarios? Aquí mismo puedes colocar los que gustes.

¿ Quieres el código fuente? aquí lo podrás descargar:Delphi Access “Zona de descargas

4 Trackbacks / Pingbacks

  1. » Procedimientos almacenados de Mysql desde Excell Con VBA y ADO (macros)
  2. » Vincular PostgreSql, Mysql u otro motor en Access usando ODBC
  3. » Delphi – Mantener un DataSet activo sin conexión con ADO
  4. Delphi – Conectarse a MariaDb usando ADO | Blog del Poli

Deja un comentario