Lady Java: Javazone, la versión geek de Bad Romance

Los programadores de Java (aka Javeros) tienen a su propia diva del pop… Lady Java (Jenny Skavlan), una especie de clónico de Lady Gaga (o algo así como C# de Java). La canción interpretada es a su vez una versión convenientemente modificada del gran éxito de Lady Gaga, Bad Romance.

Bueno, ya va bien que de tanto en tanto los programadores java se lleven alguna que otra alegría ¿no? Si vamos, porque de los disgustos ya se encargará Oracle ;)

La tecnología Microsoft y el ratón

Sin duda más de uno de nosotros ha golpeado el monitor del ordenador, aporreado el teclado, o movido frenéticamente el ratón cuando algún programa ha dejado de funcionar, aun sabiendo que no serviría para nada… ¿o no?
Según la ayuda de Microsoft sobre la exportación de Microsoft Query a Excel parece ser que mover el ratón frenéticamente no es tan inútil y estúpido como puede parecer. Leed la curiosa solución que propone los expertos de Microsoft para solucionar un problema de retorno de datos. El segundo método es del todo curioso…

Problema:
XL97: Data Not Returned from Query Using ORACLE Data Source
Síntoma:
When you try to return data from Microsoft Query 97 to a Microsoft Excel 97 worksheet, the spinning globe icon (which signifies that a query is processing) may appear for a long time, and then the query returns no data to your worksheet.

Method 2:
Move Your Mouse Pointer
If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.

Aquí tenéis el link para verlo in-situ: http://support.microsoft.com/?scid=kb%3Ben-us%3B168702&x=14&y=15

¡Esto si que es tecnología del futuro!

Introducción a PDO: PHP Data Objects

PDO es una librería de acceso a bases de datos para PHP.
La necesidad de una librería como PDO nace de la gran cantidad de bases de datos soportadas por PHP. Cada una de estas bases de datos necesita de su propia API para hacer tareas generalmente comunes al resto. Esto provoca que nuestro código no sea fácil portar de una base de datos a otra y ayuda (con la colaboración de muchas otras cosas) a complicarnos la vida.

Para solucionar este problema en PHP existen múltiples librerías ofrecidas por terceros. ADODB, PEAR DB y MDB2 son algunas de las más populares.

Aunque la mayoría de estas librerías son mucho mas maduras que PDO y en algunos aspectos ofrecen muchas más funcionalidades, PDO tiene ciertas ventajas que no podemos obviar.

Para empezar: la velocidad. PDO esta compilado en C/C++, por los que ofrece mayor rapidez de ejecución que sus competidoras (de código interpretado). Por otra parte: viene incorporado en PHP5 (es la solución “oficial” y en continua evolución) y desde PHP 5.1 viene “enabled” por defecto. De esta manera no tienes que importar ni cargar código de terceros cuando quieres usarlo.

No hay que olvidar que PDO está completamente orientado a objetos, lo que facilita su uso frente al engorro de las decenas de diferentes funciones de las API de cada sistema de bases de datos.

PDO actualmente soporta: Microsoft SQL Server, Firebird, IBM Informix, MySQL, Oracle, ODBC, PostgreSQL, SQLite.

Conexión a la base de datos

Una buena manera de ver la idea que hay detrás de una librería como PDO es mostrar por un lado como se realiza una conexión con la API de MySQL y PostgreSQL y por otro lado la versión con PDO.

MySQL:

[code language=’php’]
$conexion = mysql_connect($host, $usuario, $password);
mysql_select_db($db, $conexion);
[/code]

PostgreSQL:

$conexion =pg_connect(“host=$host dbname=$db user=$usuario password=$password”);

Como podemos ver, a pesar de usar dos funciones diferentes para realizar la conexión, la forma de hacerlo es prácticamente la misma.

Ahora, con PDO.

Para MySQL:

$conexion = new PDO(“mysql:host=$host; dbname=$db”, $usuario, $password);

Para PostgreSQL:

$conexion = new PDO(“pgsql:host=$host; dbname=$db”, $usuario, $password);

Solo el nombre del driver de la base de datos que usemos cambia.

Ahora, a modo de ejemplo, veamos como se haría una simple consulta SELECT con PDO.

$conexion = new PDO(“mysql:host=$host; dbname=$db”, $usuario, $password);
//queda claro que las variables necesarias para el DSN están convenientemente informadas.
//$host=localhost, $db = basedatos, …


$sql = “SELECT * FROM tabla ORDER by id”;
$query = $conexion->query($sql);
while( $row = $query->fetch(PDO::FETCH_ASSOC) )
{
print_r($row);
}

Espero profundizar mas en diferentes aspectos de PDO como excepciones, sentencias preparadas y manipulación de rowsets entre otros en los próximos post.

¡Hasta pronto!