Alters

la pseudo-capa: primeros pasos


Aquí estoy de nuevo,

Voy a empezar con el bridge, tal como escribí en la anterior entrada.
Pero antes me gustaría hacer un poco de presentación.

Soy David, actualmente vivo en Cataluña. Soy técnico superior en desarrollo de aplicaciones informáticas; también poseo un título de técnico experto en COBOL. Actualmente estoy en proceso de obtener una certificación ISPA (Informatino Security Profesional Acreditation). En cuanto termine la acreditación (o incluso antes) empezaré un bachelor. Mi idea es terminarlo (son tres años), hacer un curso puente para conseguir el título de grado en ingeniería informática (esto es opcional), luego algún master(preferiblemente en IA), y finalmente doctorarme.

Se que es mucho suponer que todo saldrá así, pero bueno.

Empecemos con el bridge!

- Primeros pasos
   · Conectando una aplicación a mySql
     * php -> mySql
     * java -> mySql
   · Lanzar peticiones a mySql
   · Recuperar los datos

Conectarse a mySql

Lo primero es conectarse a mySql. Lo veremos desde dos lenguajes diferentes: php y java. Esta norma se aplicará a casi toda la construcción del puente.

Desde php:

$connection = mysql_select_db(nuestra_database, ($con = mysql_connect("localhost", user, pass)));

Una aclaración: normalmente siempre trabajamos en local, por eso conectamos en "localhost".

Desde java:

Para conectar desde java, primero tenemos que tener el driver de conexión (en la página de mysql está para bajar gratis).

Una vez bajado, añadimos una referencia a nuestro proyecto, e incluímos "import java.sql.*;" en la sección de imports de nuestra clase.

Para conectar, podemos hacer lo siguiente:


Connection con = null;

try{
Class.forName("com.mysql.jdbc.Driver");

con = DriverManager.getConnection("jdbc:mysql://localhost/database", user, pass);
}catch (ClassNotFoundException e){
//ToDo
}catch (SQLException e){
//ToDo
}

Lanzar peticiones

Con esto me refiero a ejecutar sentencias SQL, tanto select, como update, delete...

Lo primero, decir que las peticiones, dentro de php y java, se dividen en dos grupos: los SELECT, y el resto. Esto es debido a que el SELECT retorna algo, y el resto no (aunque luego se pueden recuperar datos de ellos, como el número de filas afectadas).

Desde php

$result = mysql_query(sentencia);

$result se pondría solo para los select. Para limpiar los resultados, tendríamos que ejecutar:

mysql_free_result($result);

Desde java


ResultSet rs = null;

try {
rs = con.createStatement().executeQuery(sql);
} catch (SQLException e) {
//ToDo
}

Para los select, y para el resto:


try{
con.createStatement().executeUpdate(sql);
}catch (SQLException e){
//ToDo
}

Recuperar datos

Los datos quedan recuperados, en el Select, en sendas variables "$result" y "rs".

Sin embargo, para accesar los datos tenemos que emplear métodos nativos de php y java:

Para este punto necesitamos una serie de datos concretos.

  - Sentencia ejecutada: "select nombre, apellido, telf from usuarios";
  - Estructura de datos:
      * nombre: varchar(100)
      * apellido: varchar(100)
      * telf: int(9)

Desde php

$nom = "";
$ape = "";
$tel = 0;

while($row = mysql_fetch_array($res)){
   $nom = $row[0];
   $ape = $row['apellido'];
   $tel = $row[2];
}

Como se ve, se puede acceder por índice (empezando de 0), o por el nombre del campo. Esto último, cabe remarcar que si, por ejemplo, escribirmos "select nombre, concat(apellido, ' ' coalesce(telf, 'no tiene')) from usuarios", el equvalente a "$row[1]" sería "$row['concat(apellido, ' ' coalesce(telf, 'no tiene'))']".

Desde java



try {
while(rs.next()){
            String name = new String(rs.getString(1));
            String sName = (String)rs.getObject(2);
            int telf = rs.getInt(3);
        }
}catch (SQLException e){
//ToDo
}

Como se ve, aquí se accede por índice, y mediante métodos varios: los getXXX. Si no sabemos exactamente qué recuperamos, podemos hacer un getObject, y luego hacer un cast. En caso de saberlo, podemos hacer un getString, o getInt, o getDate...

Remarcar que el índice de acceso empieza por 1, no por 0.


Aquí termina la primera parte, quizás la más corta. En la siguiente entrada trataremos las funciones y objetos.

Hasta la próxima!