Bases de datos, Programación

Desinstalar Oracle Database 11g en Windows

Si quieres desinstalar la base de datos Oracle Database 11g en Windows, seguro que no has encontrado el bonito acceso directo a su programa de desinstalación. Pues deja de buscar, porque no lo vas a encontrar.
Para desinstalar esta base de datos hay que seguir los pasos que dice este post.

Blog de Antonio M. Vélez Ferrón

Si hemos instalado Oracle Database 11g de manera incorrecta, tenemos problemas con él, o simplemente queremos eliminarlo por completo de nuestro equipo, debemos desinstalarlo.

Desinstalar Oracle Database 11g es una tarea un poco difícil y requiere de conocimientos previos y saber que estamos haciendo, es por ello que voy a hacer este minitutorial para el que necesite desinstalarlo y no sepa como.

Nota: El tutorial está hecho en Windows 7 pero es válido tanto para XP como para Vista.

Ver la entrada original 230 palabras más

Bases de datos, Herramientas/Utilidades, Programación

JPA:Difference between FetchType LAZY and EAGER

Un ejemplo para diferenciar entre EAGER y LAZY en JPA.

TECH ZONE

Difference between FetchType LAZY and EAGER

The EAGER strategy is a requirement on the persistence provider runtime that data must be eagerly fetched ( fetch in one query ) .

The LAZY strategy is a hint to the persistence provider runtime that data should be fetched lazily when it is first accessed( fetch when needed as sub-queries).

For Example :

you might have an entity called Student and another entity called Courses .

The Student entity might have some basic properties such as id, name etc. as well as a property called Courses .

Now when you load a Student from the database, JPA loads its id, name fields for you. But you have two options for Courses : to load it together with the rest of the fields (i.e. eagerly) or to load it on-demand (i.e. lazily) when you call the Student ‘s getCourses() method-This is called  eager loading.

When a Student has…

Ver la entrada original 62 palabras más

Bases de datos, Herramientas/Utilidades, Programación, Tutoriales

Deshabilitar caducidad de ‘system’ en Oracle XE

Si, anteriormente, expliqué la forma de restablecer la contraseña de ‘system’ en la base de datos Oracle XE, ahora explicaré la forma de no tener que llegar a ese caso, haciendo que la contraseña no caduque:

1.- Abre una ventana de comandos en cualquier directorio.

2.- Si tienes más bases de datos instalados en la máquina, conviene establecer las siguientes variables de entorno. Si sólo tienes una, no es necesario realizar este paso:

set ORACLE_SID=XE

set ORACLE_HOME=<oracle_path> (Ejemplo: c:\oraclexe\app\oracle\product\11.2.0\server\)

3.- Ejecuta este comando para iniciar los comandos de SQL:

sqlplus / as sysdba

Se mostrará la ventana así:

sql

4.- Ejecutar este comando:

SQL> alter profile default limit password_life_time unlimited;

5.- Si quieres comprobar si se ha cambiado, ejecuta este comando:

SQL> SELECT profile, resource_name, limit FROM dba_profiles WHERE profile=’DEFAULT’;

Y debe haber una fila así:

DEFAULT    PASSWORD_LIFE_TIME               UNLIMITED

Bases de datos, Herramientas/Utilidades, Programación, Tutoriales

Restablecer contraseña ‘system’ de Oracle XE

Si te has instalado la base de datos Oracle XE, es probable que en unos meses caduque la contraseña del usuario del sistema ‘system’, a no ser que la hayas cambiado antes de caducar.

Si estás en el caso de que ha caducado, aquí tienes la forma de solucionarlo:

1.- Abre una ventana de comandos en cualquier directorio.

2.- Si tienes más bases de datos instalados en la máquina, conviene establecer las siguientes variables de entorno. Si sólo tienes una, no es necesario realizar este paso:

set ORACLE_SID=XE

set ORACLE_HOME=<oracle_path> (Ejemplo: c:\oraclexe\app\oracle\product\11.2.0\server\)

3.- Ejecuta este comando para iniciar los comandos de SQL:

sqlplus / as sysdba

Se mostrará la ventana así:

sql

4.- Ejecutar estos dos comandos para cambiar las contraseñas de ‘system’ y ‘sys’:

SQL> alter user system identified by <nueva_contraseña>;

SQL> alter user sys identified by <nueva_contraseña>;

Y listo, la contraseña ya está cambiada.

Bases de datos, Guía rápida de PHP + MySQL, MySQL, PHP, Programación, Tutoriales

Guía rápida de PHP + MySQL

Tras terminar mi primer proyecto web, quería hacer un breve tutorial para manejar fácilmente PHP y MySQL y compartirlo con más principiantes de estos lenguajes. Así que, aquí está.

Requisitos (características que he usado, básicamente)

  • Eclipse Indigo (en mi caso la versión de 64 bits para Windows 7, pero vale cualquiera).
  • Versión de Java: jdk1.7.0_03 de 64 bits. (Ésta es la versión que he utilizado por que era la última del momento. Cualquiera versión del JDK 1.6 va a funcionar igualmente. Ya una versión inferior no lo puedo asegurar).
  • AppServ v2.5.10 (Servidor PHP + base de datos MySQL). Las características de esta aplicación son muy parecidas a las que luego puedes encontrar en un ‘hosting’ como 1and1.es, que es el sitio donde tengo alojada la web.

Breve comentario

La aplicación AppServ instala en tu máquina un servidor de PHP y una base de datos MySQL que funcionan de forma independiente. La potencia de PHP permite conectar con la base de datos con apenas 4 comandos fáciles de utilizar.

Preparación del entorno

Desde la web http://www.eclipse.org/downloads/ podemos bajar cualquier versión de Eclipse. En este caso, descargué la versión para desarrolladores Java EE, ya que es la más completa. Aun así, será necesario descargas los plugins para el desarrollo PHP. Para ello:

  • Hacemos click en la barra de tareas en Help à Install New Software…

  • En ‘Work with’ seleccionamos ‘—All Available Sites—’. Puede tardar un rato en cargar las herramientas disponibles, pero así garantizamos que saldrá lo que necesitamos. (Requiere internet). Una vez que se carguen las herramientas, podemos introducir ‘php’ en el buscador.

  • Elegimos las herramientas de PHP que aparecen. No tienen por qué salir las mismas que las de la imagen, lo importan es que sean herramientas de desarrollo de PHP.
  • Instalamos las herramientas y esperamos a que Eclipse se reinicie y termine de configurarse.
  • Una vez que tenemos las herramientas instaladas, podemos configurar el servidor de PHP de AppServ en el Eclipse. En la barra de herramientas seleccionamos Window à Preferences… y se configura el ejecutable PHP como se ve en el siguiente dibujo:

  • Con esto ya tenemos preparado el entorno. Ahora creamos un nuevo proyecto PHP. Conviene seleccionar como carpeta para el workspace la carpeta c:\AppServ\www\, ya que aquí es donde el servidor PHP hospeda las páginas web.
  • Para poder usar el servidor PHP, deberemos configurarlo en ‘Run configurations…’ como aparece en el siguiente dibujo:

Con esta configuración ya es posible realizar y probar un proyecto PHP en eclipse sin necesidad de tener que realizarlo en un servidor web real.

Uso básico de PHP con base de datos MySQL

Con todo preparado, ya sólo queda hacer un proyecto PHP básico con uso de MySQL.

Como lo que trata es de explicar de qué forma hice el proyecto web que nombro al principio de este post, no voy a entrar en un curso de PHP, sino en cómo he utilizado sus potentes recursos en una página HTML normal y corriente.

Dentro de una página web HTML podemos incrustar el código PHP que necesitemos. Esto se hace tan simple como poner el código PHP dentro de las etiquetas <?php >. Desde aquí, ya podemos utilizar todo el PHP que queramos. También es necesario guardar la página web con la extensión *.php, si no, el servidor no compilará el código incrustado.

Por ejemplo, podemos hacer un formulario como este el de http://www.pizzeriapinocchio.es/sugerencias.html para hacer que un usuario escriba una sugerencia a la página web, que llegará al email que yo elija y una copia al usuario que lo escribe. Además, usaremos unas funciones de validación del formato del email.

OJO: muchos servidores PHP gratuitos no permiten el uso de la función mail(), encargada del envío de emails.

Podemos usar un formulario como el siguiente:

<div id=“formulario”>

<form action=‘sugerencias.php’ method=‘post’ >

Nombre: <input name=‘nombre’ type=‘text’/><br />

Email: <input name=‘email’ type=‘text’/><br />

Mensaje:<br /><textarea name=‘texto’ rows=’15’ cols=’40’></textarea><br />

<input type=‘submit’/>

</form>

</div>

Es importante poner en el action del formulario la página PHP a la que queremos enviar los datos. Este formulario puede estar en la propia página PHP, enviándose los datos a sí misma.

En PHP podemos usar funciones para luego ser llamadas las veces que hagan falta, como por ejemplo:

    <?php

        function cadenaVacia($c){

            if(empty($c)) return true;

            else if(trim($c) == “”) return true;

            else return false;

        }

        function valida_email($c){

            if(eregi(“^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$”, $c))

                return true;

            else

                return false;

        }

Estas dos sencillas funciones validan las cadenas de caracteres que se le pasen como parámetro (los textos del formulario que elijamos). La función cadenaVacia() la uso para todos los campos del formulario, ya que no quiero que se quede ningún campo vacío. La función valida_email() la usaré sólo para validar si el email introducido está correctamente formado.

En el caso de que alguna de las dos funciones devuelva false, podemos mostrar un mensaje de error informando sobre la situación. Además, no se mandará email a nadie.

Para capturar los datos enviados por el formulario podemos usarlo de esta manera:

    if (!cadenaVacia($_REQUEST[‘nombre’]) && !cadenaVacia($_REQUEST[‘email’]) && !cadenaVacia($_REQUEST[‘texto’])) {

    // si los datos están rellenos

        $nombre = $_REQUEST[‘nombre’] ;

        $email = $_REQUEST[‘email’] ;

$texto = $_REQUEST[‘texto’] ;

Con el comando $_REQUEST, podemos obtener los valores que se le han asignado en el formulario. Con la condición del if, comprobamos que todos los campos están con al menos 1 carácter. Si es así, se lo asignamos a variables. En el caso de que alguno de los campos esté vacío, podemos mostrar un error de esta manera:

    } else {

        // si los datos no están rellenos

        echo “<div id=’respuesta’><p style=’color: red’><b>Lo siento, pero todos los datos son obligatorios.</b></p></div>”;

    }

Con el comando echo, escribimos en la página web el texto deseado. En el CSS se debe tener en cuenta este <div> por si aparece.

A continuación, comprobamos si el formato del email introducido es válido:

    // se valida el email

if(valida_email($email)) {

Y de la misma manera, si el formato no es correcto:

    } else {

        echo “<div id=’respuesta’><p style=’color: red’><b>Lo siento, el formato del email no es correcto.</b></p></div>”;

    }

Si todo ha ido bien, ya podemos enviar el email a mi servidor:

if (mail(“info@pepito.com”, “Sugerencia desde la web”, “Mensaje de ” . $nombre . “:\n\n” . $texto, “From: ” . $email )) {

Los parámetros deben cumplimentarse así: mail($to, $subject, $message, $additional_headers, $additional_parameters)

Si el envío del email falla por algún motivo (servidor caído, mal configurado,…), la función mail devolverá un false, por lo que se puede tratar el error para mostrarlo en la página web:

    } else {

        echo “<div id=’respuesta’><p style=’color: red’><b>Lo siento, hubo alg&uacute;n problema al enviar la sugerencia.</b></p></div>”;

    }

Si el email se ha enviado correctamente, podemos hacer unas cosas más. Como enviar una copia al usuario que ha enviado el formulario:

    // email de copia al usuario

    $asunto = “Gracias por contactar con nosotros.”;

    $mensaje = “Hola ” . $nombre . “,\n\n” .

    “Gracias por tu mensaje.\n\n” .

    “Tu mensaje fue: ” . $texto;

    mail($email, $asunto, $mensaje,“From: no-reply@pepito.com”);

Y ahora vamos a darle uso a la base de datos MySQL. Para este caso, he decidido que, además de enviarme un email, quiero guardar la copia en la base de datos. Para ello podemos usar un código como el siguiente (la base de datos debe estar previamente creada con las tablas y atributos correspondientes a las siguientes queries):

    // y lo insertamos en la BBDD

    // conexión con la BBDD

    $conexion = mysql_connect(“servidorMySQL”,“usuarioMySQL”,“contraseñaMySQL”);

    mysql_select_db(“nombreBBDDMySQL”,$conexion);

    // peticiones

    $ins_sug=“INSERT INTO Sugerencias (NOMBRE, EMAIL, MENSAJE) VALUES (‘$nombre‘, ‘$email‘, ‘$texto‘)”;

    mysql_query($ins_sug);

    // se cierra la conexión con la BBDD

    mysql_close($conexion);

Como dije antes, con 4 comandos podemos hacer uso de la base de datos casi sin despeinarnos.

Este es un uso bastante simple de la base de datos. Para hacer algo más complicado, como obtener datos de una tabla y mostrarlos en la web, podemos hacer algo como esto:

    // petición de las familias

    $queryFamilias=“SELECT DISTINCT FAMILIA FROM Producto”;

    $familias = mysql_query($queryFamilias);

    echo “<table id=’tablaFamilias’>”;

    while ($familia = mysql_fetch_array($familias)) {

        echo ‘<script>anadirFamilia(“‘ . $familia[‘FAMILIA’] . ‘”);</script>’;

        echo ‘<tr><td><a href=”javascript:ocultarTodos();mostrarCuerpo(\” . html_entity_decode(str_replace(” “, “_”, $familia[‘FAMILIA’]), ENT_QUOTES, “UTF-8”) . ‘\’);”>’ . $familia[‘FAMILIA’] . ‘</a></td></tr>’;

    }

    echo “</table>”;

Este código obtiene los elementos de una tabla para mostrarlos en una tabla de HTML. Además, a cada elemento de la tabla se le añade unas funciones Javascript para un uso dinámico de la página web. Aunque se ve un poco engorroso, al final sólo se usa una función que ya se usó antes (mysql_query()) para el envío de queries a la base de datos. El resto es programación simple.

A partir de aquí, sólo es jugar con las típicas herramientas que ofrece cualquier lenguaje de programación (condiciones, bucles,…), combinando con otros lenguajes (Javascript, HTML, MySQL,…). Así, se puede hacer una página web como la que hice Pizzería Pinocchio.

Espero que este “tutorial” sirva para dar un empujoncito a quien esté todavía dudando en hacer una web simple y estática con HTML, o meterse un poco en PHP y base de datos MySQL, haciendo así una web mucho más eficaz e interactiva.

Cualquier duda o sugerencia, no hay más que escribir un comentario en este mismo post.