Mostramos en este tutorial cómo añadir un procedimiento (o función) almacenado a un servidor de base de datos MySQL Server y cómo usarlo en consultas SQL. Como ejemplo añadiremos un procedimiento almacenado (stored procedure) que codificará el valor pasado como parámetro de HTML a texto plano, es decir, si el texto pasado como parámetro contiene algún carácter de escape de HTML lo convertirá a su carácter normal.
- Requisitos para crear procedimiento almacenado stored procedure en MySQL Server.
- Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Administrator.
- Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Workbench.
- Cómo usar un procedimiento o función de MySQL Server en cualquier aplicación.
- Stored Procedure de ejemplo para convertir códigos HTML a caracteres normales.
- Artículos relacionados.
- Créditos.
Requisitos para crear procedimiento almacenado stored procedure en MySQL Server
Servidor con MySQL Server
En primer lugar necesitaremos disponer de acceso a un servidor con MySQL Server, bien sea en Linux o en Windows. A continuación mostramos algunos tutoriales para instalar MySQL Server tanto en Linux como en Windows:
- Videotutorial: Cómo instalar MySQL en Linux CentOS 7 Minimal y cómo habilitar acceso externo a MySQL.
- Cómo instalar MySQL Server en Windows.
- Cómo instalar MySQL Server en Linux y permitir conexiones remotas.
- Instalar MySQL Community Server 5.6.12 x64 en equipo con Windows 7 Ultimate.
- Instalar y configurar MySQL Server 5 en Linux Suse 10.
- Instalar Linux Ubuntu Server 11 x64, Apache, MySQL, PostgreSQL, Tomcat, Webmin.
- Cómo instalar MySQL Server 6.0 Alpha en Windows XP.
Herramienta software de administración de MySQL Server
Para el acceso al servidor de MySQL Server, para la administración y poder crear un procedimiento almacenado tendremos varias posibilidades:
- Usar la herramienta de la línea de comandos y crear el procedimiento de forma manual con su SQL asociado. Esto puede resultar bastante arduo y engorroso, sobre todo si el procedimiento almacenado tiene muchas líneas de código.
- Usar una herramienta software en modo gráfico: esto es lo habitual y podemos usar herramientas gratuitas oficiales del propio MySQL, como MySQL Administrator o MySQL Workbench. En este tutorial mostraremos cómo crear un procedimiento o función MySQL usando tanto MySQL Administrator como MySQL Workbench.
Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Administrator
A continuación mostraremos cómo añadir un procedimiento o función a un servidor MySQL Server usando el software MySQL Administrator. Para ello deberemos disponer de este software (es oficial de MySQL y gratuito). Iniciaremos sesión en MySQL Administrator contra el servidor MySQL Server que consideremos, accederemos a la pestaña «Stored procedures» y, para crear un nuevo, pulsaremos en «Create Stored Proc»:
Introduciremos un nombre para el procedimiento almacenado o función, en nuestro caso, HTML_UnEncode y pulsaremos si va a ser un procedimiento en «Create PROCEDURE», si va a ser una función en «Create FUNCTION». En nuestro caso será una función pues devolverá un valor de cadena. Aunque pulsando cualquiera de los dos botones en el código del procedimiento/función se puede especificar si es un procedimiento (PROCEDURE) o una función (FUNCTION):
Si hemos elegido «Create PROCEDURE» nos habrá generado el código:
CREATE PROCEDURE ‘nombreBD’.’nombre_procedimiento’ ()
BEGIN
# código del procedimiento
END
Si hemos elegido «Create FUNCTION» nos habrá generado el código:
CREATE FUNCTION
nombre_BD
.nombre_funcion
() RETURNS INT
BEGIN
# código de la función
END
Cambiaremos el código generado automáticamente por el que queramos que realice nuestro procedimiento/función. En nuestro caso añadiremos una función a la que se le pasará como parámetro un valor de texto (string / varchar) y devolverá otro valor de texto, lo que hará el código de la función será convertir los caracteres HTML en caracteres normales. Una vez que hayamos introducido el código para el procedimiento/función pulsaremos en «Execute SQL» que comprobará la sintaxis y ejecutará el SQL de creación del procedimiento/función:
Nota: en el código del procedimiento/función se le puede indicar qué usuarios y desde qué IP podrán ejecutarlo, por ejemplo:
- CREATE DEFINER=’root’@’%’ indica que dicho procedimiento podrá ser ejecutado por el usuario root y desde cualquier IP (%).
Si todo es correcto el procedimiento/función quedará guardada en el servidor MySQL Server y podrá ser usado por cualquier aplicación que lo requiera:
Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Workbench
A continuación mostraremos cómo añadir un procedimiento o función a un servidor MySQL Server usando el software MySQL Workbench. Para ello deberemos disponer de este software (es oficial de MySQL y gratuito). Iniciaremos sesión en MySQL Workbench contra el servidor MySQL Server que consideremos, pulsaremos en el botón «Create a new function…» o bien «Create a new stored procedure», según queramos generar un procedimiento (no devolverá nada) o una función (devolverá un valor):
El asistente nos habrá generado un pequeño código para crear una función vacía:
- En el caso de una función (function):
CREATE FUNCTION
new_function
()
RETURNS INTEGER
BEGINRETURN 1;
END
- En el caso de un procedimiento almacenado (stored procedure):
CREATE PROCEDURE
new_procedure
()
BEGINEND
Introduciremos el código que queramos para la función o el procedimiento y pulsaremos en «Apply»:
El asistente para crear un nuevo procedimiento/función de MySQL Workbench nos mostrará el scritp SQL que se ejecutará, pulsaremos en «Apply»:
Nos mostrará el resultado de la creación del procedimiento/función, si todo es correcto nos mostrará «SQL script was successfully applied to the database», pulsaremos «Finish»:
En la parte izquierda, en Functions o en Stored Procedures podremos consultar las funciones y procedimientos almacenados de nuestro servidor MySQL Server:
Pulsando con el botón derecho del ratón sobre el procedimiento o función que queramos podremos editarlo o eliminarlo:
Cómo usar un procedimiento o función de MySQL Server en cualquier aplicación
Una vez que hayamos creado el procedimiento o función como hemos indicado anteriormente, ya podremos usarlo en cualquier aplicación que conecte con MySQL Server. Por ejemplo, en nuestro caso, para usar la función HTML_UnEncode en una consulta SQL en el lenguaje de programación Delphi haremos lo siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<em>procedure TformMonitorizacion.llenarGridAlarmas(Posicion: Integer); begin mdMonitorizacion.tcEvento.Close; mdMonitorizacion.tcEvento.SQL.Clear; mdMonitorizacion.tcEvento.SQL.Add('select e.*, a.nombre Agente, a.ultimo_contacto, '); mdMonitorizacion.tcEvento.SQL.Add('g.nombre Grupo, <strong>HTML_UnEncode</strong>(e.evento) evento_deco'); mdMonitorizacion.tcEvento.SQL.Add('from tevento e'); mdMonitorizacion.tcEvento.SQL.Add('inner join tagente a on e.id_agente = a.id_agente'); mdMonitorizacion.tcEvento.SQL.Add('inner join tgrupo g on e.id_grupo = g.id_grupo'); mdMonitorizacion.tcEvento.SQL.Add('order by e.id_evento desc'); mdMonitorizacion.tcEvento.Open; mdMonitorizacion.tcEvento.RecNo := Posicion; end;</em> |
Como vemos en el código de ejemplo, la función HTML_UnEncode creada se utiliza como una función más de MySQL Server y se añada en la sentencia SQL, en este caso le pasamos como parámetro el valor de un campo de texto y nos devuelve dicho valor pero reemplazando los caracteres unicode HTML por su correspondencia en caracteres normales.
Stored Procedure de ejemplo para convertir códigos HTML a caracteres normales
A continuación mostramos el contenido del procedimiento almacenado de ejemplo que hemos usado en este tutorial. En este caso hemos creado una función a la que se le pasa como parámetro un valor de texto y devuelve otro valor de texto, reemplazando los caracteres de escape propios de HTML en texto normal:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529 <em>CREATE DEFINER=CURRENT_USER FUNCTION `HTML_UnEncode`(x VARCHAR(255)) RETURNS varchar(255) CHARSET latin1BEGINDECLARE TextString VARCHAR(255) ;SET TextString = x ;#quotation markIF INSTR( x , '"' )THEN SET TextString = REPLACE(TextString, '"','"') ;END IF ;#apostropheIF INSTR( x , ''' )THEN SET TextString = REPLACE(TextString, ''','"') ;END IF ;#ampersandIF INSTR( x , '&' )THEN SET TextString = REPLACE(TextString, '&','&') ;END IF ;#less-thanIF INSTR( x , '<' )THEN SET TextString = REPLACE(TextString, '<','<') ; END IF ; #greater-than IF INSTR( x , '>' ) THEN SET TextString = REPLACE(TextString, '>','>') ;END IF ;#non-breaking spaceIF INSTR( x , ' ' )THEN SET TextString = REPLACE(TextString, ' ',' ') ;END IF ;#inverted exclamation markIF INSTR( x , '¡' )THEN SET TextString = REPLACE(TextString, '¡','¡') ;END IF ;#centIF INSTR( x , '¢' )THEN SET TextString = REPLACE(TextString, '¢','¢') ;END IF ;#poundIF INSTR( x , '£' )THEN SET TextString = REPLACE(TextString, '£','£') ;END IF ;#currencyIF INSTR( x , '¤' )THEN SET TextString = REPLACE(TextString, '¤','¤') ;END IF ;#yenIF INSTR( x , '¥' )THEN SET TextString = REPLACE(TextString, '¥','¥') ;END IF ;#broken vertical barIF INSTR( x , '¦' )THEN SET TextString = REPLACE(TextString, '¦','¦') ;END IF ;#sectionIF INSTR( x , '§' )THEN SET TextString = REPLACE(TextString, '§','§') ;END IF ;#spacing diaeresisIF INSTR( x , '¨' )THEN SET TextString = REPLACE(TextString, '¨','¨') ;END IF ;#copyrightIF INSTR( x , '©' )THEN SET TextString = REPLACE(TextString, '©','©') ;END IF ;#feminine ordinal indicatorIF INSTR( x , 'ª' )THEN SET TextString = REPLACE(TextString, 'ª','ª') ;END IF ;#angle quotation mark (left)IF INSTR( x , '«' )THEN SET TextString = REPLACE(TextString, '«','«') ;END IF ;#negationIF INSTR( x , '¬' )THEN SET TextString = REPLACE(TextString, '¬','¬') ;END IF ;#soft hyphenIF INSTR( x , '' )THEN SET TextString = REPLACE(TextString, '','') ;END IF ;#registered trademarkIF INSTR( x , '®' )THEN SET TextString = REPLACE(TextString, '®','®') ;END IF ;#spacing macronIF INSTR( x , '¯' )THEN SET TextString = REPLACE(TextString, '¯','¯') ;END IF ;#degreeIF INSTR( x , '°' )THEN SET TextString = REPLACE(TextString, '°','°') ;END IF ;#plus-or-minusIF INSTR( x , '±' )THEN SET TextString = REPLACE(TextString, '±','±') ;END IF ;#superscript 2IF INSTR( x , '²' )THEN SET TextString = REPLACE(TextString, '²','²') ;END IF ;#superscript 3IF INSTR( x , '³' )THEN SET TextString = REPLACE(TextString, '³','³') ;END IF ;#spacing acuteIF INSTR( x , '´' )THEN SET TextString = REPLACE(TextString, '´','´') ;END IF ;#microIF INSTR( x , 'µ' )THEN SET TextString = REPLACE(TextString, 'µ','µ') ;END IF ;#paragraphIF INSTR( x , '¶' )THEN SET TextString = REPLACE(TextString, '¶','¶') ;END IF ;#middle dotIF INSTR( x , '·' )THEN SET TextString = REPLACE(TextString, '·','·') ;END IF ;#spacing cedillaIF INSTR( x , '¸' )THEN SET TextString = REPLACE(TextString, '¸','¸') ;END IF ;#superscript 1IF INSTR( x , '¹' )THEN SET TextString = REPLACE(TextString, '¹','¹') ;END IF ;#masculine ordinal indicatorIF INSTR( x , 'º' )THEN SET TextString = REPLACE(TextString, 'º','º') ;END IF ;#angle quotation mark (right)IF INSTR( x , '»' )THEN SET TextString = REPLACE(TextString, '»','»') ;END IF ;#fraction 1/4IF INSTR( x , '¼' )THEN SET TextString = REPLACE(TextString, '¼','¼') ;END IF ;#fraction 1/2IF INSTR( x , '½' )THEN SET TextString = REPLACE(TextString, '½','½') ;END IF ;#fraction 3/4IF INSTR( x , '¾' )THEN SET TextString = REPLACE(TextString, '¾','¾') ;END IF ;#inverted question markIF INSTR( x , '¿' )THEN SET TextString = REPLACE(TextString, '¿','¿') ;END IF ;#multiplicationIF INSTR( x , '×' )THEN SET TextString = REPLACE(TextString, '×','×') ;END IF ;#divisionIF INSTR( x , '÷' )THEN SET TextString = REPLACE(TextString, '÷','÷') ;END IF ;#capital a, grave accentIF INSTR( x , 'À' )THEN SET TextString = REPLACE(TextString, 'À','À') ;END IF ;#capital a, acute accentIF INSTR( x , 'Á' )THEN SET TextString = REPLACE(TextString, 'Á','Á') ;END IF ;#capital a, circumflex accentIF INSTR( x , 'Â' )THEN SET TextString = REPLACE(TextString, 'Â','Â') ;END IF ;#capital a, tildeIF INSTR( x , 'Ã' )THEN SET TextString = REPLACE(TextString, 'Ã','Ã') ;END IF ;#capital a, umlaut markIF INSTR( x , 'Ä' )THEN SET TextString = REPLACE(TextString, 'Ä','Ä') ;END IF ;#capital a, ringIF INSTR( x , 'Å' )THEN SET TextString = REPLACE(TextString, 'Å','Å') ;END IF ;#capital aeIF INSTR( x , 'Æ' )THEN SET TextString = REPLACE(TextString, 'Æ','Æ') ;END IF ;#capital c, cedillaIF INSTR( x , 'Ç' )THEN SET TextString = REPLACE(TextString, 'Ç','Ç') ;END IF ;#capital e, grave accentIF INSTR( x , 'È' )THEN SET TextString = REPLACE(TextString, 'È','È') ;END IF ;#capital e, acute accentIF INSTR( x , 'É' )THEN SET TextString = REPLACE(TextString, 'É','É') ;END IF ;#capital e, circumflex accentIF INSTR( x , 'Ê' )THEN SET TextString = REPLACE(TextString, 'Ê','Ê') ;END IF ;#capital e, umlaut markIF INSTR( x , 'Ë' )THEN SET TextString = REPLACE(TextString, 'Ë','Ë') ;END IF ;#capital i, grave accentIF INSTR( x , 'Ì' )THEN SET TextString = REPLACE(TextString, 'Ì','Ì') ;END IF ;#capital i, acute accentIF INSTR( x , 'Í' )THEN SET TextString = REPLACE(TextString, 'Í','Í') ;END IF ;#capital i, circumflex accentIF INSTR( x , 'Î' )THEN SET TextString = REPLACE(TextString, 'Î','Î') ;END IF ;#capital i, umlaut markIF INSTR( x , 'Ï' )THEN SET TextString = REPLACE(TextString, 'Ï','Ï') ;END IF ;#capital eth, IcelandicIF INSTR( x , 'Ð' )THEN SET TextString = REPLACE(TextString, 'Ð','Ð') ;END IF ;#capital n, tildeIF INSTR( x , 'Ñ' )THEN SET TextString = REPLACE(TextString, 'Ñ','Ñ') ;END IF ;#capital o, grave accentIF INSTR( x , 'Ò' )THEN SET TextString = REPLACE(TextString, 'Ò','Ò') ;END IF ;#capital o, acute accentIF INSTR( x , 'Ó' )THEN SET TextString = REPLACE(TextString, 'Ó','Ó') ;END IF ;#capital o, circumflex accentIF INSTR( x , 'Ô' )THEN SET TextString = REPLACE(TextString, 'Ô','Ô') ;END IF ;#capital o, tildeIF INSTR( x , 'Õ' )THEN SET TextString = REPLACE(TextString, 'Õ','Õ') ;END IF ;#capital o, umlaut markIF INSTR( x , 'Ö' )THEN SET TextString = REPLACE(TextString, 'Ö','Ö') ;END IF ;#capital o, slashIF INSTR( x , 'Ø' )THEN SET TextString = REPLACE(TextString, 'Ø','Ø') ;END IF ;#capital u, grave accentIF INSTR( x , 'Ù' )THEN SET TextString = REPLACE(TextString, 'Ù','Ù') ;END IF ;#capital u, acute accentIF INSTR( x , 'Ú' )THEN SET TextString = REPLACE(TextString, 'Ú','Ú') ;END IF ;#capital u, circumflex accentIF INSTR( x , 'Û' )THEN SET TextString = REPLACE(TextString, 'Û','Û') ;END IF ;#capital u, umlaut markIF INSTR( x , 'Ü' )THEN SET TextString = REPLACE(TextString, 'Ü','Ü') ;END IF ;#capital y, acute accentIF INSTR( x , 'Ý' )THEN SET TextString = REPLACE(TextString, 'Ý','Ý') ;END IF ;#capital THORN, IcelandicIF INSTR( x , 'Þ' )THEN SET TextString = REPLACE(TextString, 'Þ','Þ') ;END IF ;#small sharp s, GermanIF INSTR( x , 'ß' )THEN SET TextString = REPLACE(TextString, 'ß','ß') ;END IF ;#small a, grave accentIF INSTR( x , 'à' )THEN SET TextString = REPLACE(TextString, 'à','à') ;END IF ;#small a, acute accentIF INSTR( x , 'á' )THEN SET TextString = REPLACE(TextString, 'á','á') ;END IF ;#small a, circumflex accentIF INSTR( x , 'â' )THEN SET TextString = REPLACE(TextString, 'â','â') ;END IF ;#small a, tildeIF INSTR( x , 'ã' )THEN SET TextString = REPLACE(TextString, 'ã','ã') ;END IF ;#small a, umlaut markIF INSTR( x , 'ä' )THEN SET TextString = REPLACE(TextString, 'ä','ä') ;END IF ;#small a, ringIF INSTR( x , 'å' )THEN SET TextString = REPLACE(TextString, 'å','å') ;END IF ;#small aeIF INSTR( x , 'æ' )THEN SET TextString = REPLACE(TextString, 'æ','æ') ;END IF ;#small c, cedillaIF INSTR( x , 'ç' )THEN SET TextString = REPLACE(TextString, 'ç','ç') ;END IF ;#small e, grave accentIF INSTR( x , 'è' )THEN SET TextString = REPLACE(TextString, 'è','è') ;END IF ;#small e, acute accentIF INSTR( x , 'é' )THEN SET TextString = REPLACE(TextString, 'é','é') ;END IF ;#small e, circumflex accentIF INSTR( x , 'ê' )THEN SET TextString = REPLACE(TextString, 'ê','ê') ;END IF ;#small e, umlaut markIF INSTR( x , 'ë' )THEN SET TextString = REPLACE(TextString, 'ë','ë') ;END IF ;#small i, grave accentIF INSTR( x , 'ì' )THEN SET TextString = REPLACE(TextString, 'ì','ì') ;END IF ;#small i, acute accentIF INSTR( x , 'í' )THEN SET TextString = REPLACE(TextString, 'í','í') ;END IF ;#small i, circumflex accentIF INSTR( x , 'î' )THEN SET TextString = REPLACE(TextString, 'î','î') ;END IF ;#small i, umlaut markIF INSTR( x , 'ï' )THEN SET TextString = REPLACE(TextString, 'ï','ï') ;END IF ;#small eth, IcelandicIF INSTR( x , 'ð' )THEN SET TextString = REPLACE(TextString, 'ð','ð') ;END IF ;#small n, tildeIF INSTR( x , 'ñ' )THEN SET TextString = REPLACE(TextString, 'ñ','ñ') ;END IF ;#small o, grave accentIF INSTR( x , 'ò' )THEN SET TextString = REPLACE(TextString, 'ò','ò') ;END IF ;#small o, acute accentIF INSTR( x , 'ó' )THEN SET TextString = REPLACE(TextString, 'ó','ó') ;END IF ;#small o, circumflex accentIF INSTR( x , 'ô' )THEN SET TextString = REPLACE(TextString, 'ô','ô') ;END IF ;#small o, tildeIF INSTR( x , 'õ' )THEN SET TextString = REPLACE(TextString, 'õ','õ') ;END IF ;#small o, umlaut markIF INSTR( x , 'ö' )THEN SET TextString = REPLACE(TextString, 'ö','ö') ;END IF ;#small o, slashIF INSTR( x , 'ø' )THEN SET TextString = REPLACE(TextString, 'ø','ø') ;END IF ;#small u, grave accentIF INSTR( x , 'ù' )THEN SET TextString = REPLACE(TextString, 'ù','ù') ;END IF ;#small u, acute accentIF INSTR( x , 'ú' )THEN SET TextString = REPLACE(TextString, 'ú','ú') ;END IF ;#small u, circumflex accentIF INSTR( x , 'û' )THEN SET TextString = REPLACE(TextString, 'û','û') ;END IF ;#small u, umlaut markIF INSTR( x , 'ü' )THEN SET TextString = REPLACE(TextString, 'ü','ü') ;END IF ;#small y, acute accentIF INSTR( x , 'ý' )THEN SET TextString = REPLACE(TextString, 'ý','ý') ;END IF ;#small thorn, IcelandicIF INSTR( x , 'þ' )THEN SET TextString = REPLACE(TextString, 'þ','þ') ;END IF ;#small y, umlaut markIF INSTR( x , 'ÿ' )THEN SET TextString = REPLACE(TextString, 'ÿ','ÿ') ;END IF ;#espacioIF INSTR( x , ' ' )THEN SET TextString = REPLACE(TextString, ' ',' ') ;END IF ;#parentesis (IF INSTR( x , '(' )THEN SET TextString = REPLACE(TextString, '(','(') ;END IF ;#parentesis )IF INSTR( x , ')' )THEN SET TextString = REPLACE(TextString, ')',')') ;END IF ;#comilla simple 'IF INSTR( x , ''' )THEN SET TextString = REPLACE(TextString, ''','\'') ;END IF ;RETURN TextString ;END</em>
Artículos relacionados
- Cómo crear trigger en MySQL Server 5, disparadores para auditoría de tablas.
- Concepto y ejemplo de creación de disparadores (triggers) en Oracle.
- Cómo exportar o migrar una base de datos MySQL a PostgreSQL de forma manual.
- Montar servidor web Apache y servidor MySQL con Linux CentOS 7 Minimal.
- Montar servidor web con Apache en Linux Debian 5 con MySQL y PHP.
- Cómo reciclar hardware obsoleto para montar un servidor web de forma gratuita.
- Servidor web con Ubuntu Server 12 y LAMP Server Apache PHP MySQL.
- Instalar Linux Ubuntu Server 13.04 servidor web con Tomcat, Apache, PHP y MySQL.
- Cómo crear una web profesional y dinámica con el CMS Joomla.
- Montar un servidor web y un sitio web en Windows 7 con AppServ y Joomla!.
- Cómo crear un sitio web con secciones dinámicas con HTML, PHP, Delphi y MySQL.
- Instalar Linux Ubuntu Server 11 x64, Apache, MySQL, PostgreSQL, Tomcat, Webmin.
- Montar un servidor web y un sitio web en Windows 7 con AppServ y Joomla!.
- Artículos, manuales sobre MySQL Server.
- Enciclopedia de Comandos Linux.
- Instalar Linux Debian 6.0.1a Squeeze en un equipo nuevo.
- Cómo instalar Linux Debian 5.0.7 virtualizado en VMware Workstation.
- AjpdSoft Gestor de Contenidos Web y sitio web dinámico en PHP.
- Montar un servidor de correo electrónico mail en Linux Ubuntu.
- Acceso al motor de base de datos PostgreSQL desde Windows XP con ODBC.
- Instalar el motor de base de datos PostgreSQL 8.4 en Linux Ubuntu 10.
- Instalar el motor de bases de datos PostgreSQL en Linux Debian 5.
- Cómo instalar MySQL Server en Windows.
- Cómo instalar MySQL Server en Linux y permitir conexiones remotas.
- Acceso a MySQL desde Android con Eclipse, Java y JDBC.
- Acceso nativo a MySQL Server con VB.Net usando el driver Connector Net
Créditos
Artículo realizado íntegramente por Alonsojpd, miembro fundador del Proyecto AjpdSoft.