Database wrapper para Jaws

Pues el día de hoy TODO estuvo de hueva, así que en una clase libre me puse a compilar mentalmente unas ideas para Jaws: Un Wrapper para la base de Datos.

La idea del Wrapper (db_wrapper) es poder soportar muchos DBMS para ejecutar un query y tomar los datos, así como usar un mismo nombre para las funciones de todos los DBMS, por ejemplo: fetch_row, query, connect, data, data_field, etc.

Otra de las caracteristicas del wrapper es que 'valida' a la clase del DBMS, si no cumple con los requisitos mínimos manda un error y termina la aplicación.

Aparte, si el query es un SELECT, la forma en como va a 'juntar' todos los datos en un arreglo es un formato más sencillo de analizar y de recorrer, por ejemplo:

//Seleccionamos todos los 'registros' de la tabla registry
$sql = "SELECT * FROM registry";
//Ejecutamos el query, lo que hace query es encontrar un SELECT en la instrucción y si lo encuentra pues toma datos y sino.. pues no.
$GLOBALS["app"]->db2->query($sql);
//Ahora, se recorre todo el arreglo, es parecido a como se hacen en mysql y en adodb, ya que el while no termina hasta que haya recorrido todos los valores. 
while($row = next($GLOBALS["app"]->db2->data())) {
//Imprime el valor
  echo $row["value"]."
"
;
}
 

Y en el Wrapper se llaman a las funciones correspondientes del Driver, por ejemplo:

  function query($sql) {
    $function = FUNCTION;
    $this->driver->$function($sql);
  }
 

Sencillo, no?, y claro, para tomar un valor:

$sql = "SELECT * FROM registry WHERE id=15";
$GLOBALS["app"]->db2->query($sql);
//Con la diferencia que no hay while, sino simplemente se pide el campo 'value'
echo $GLOBALS["app"]->db2->field("value");
 

Con su correspondiente función:

  function field($field_name) {
    return $this->driver->data[$field_name];
  }
 

face-smile.png , en cuanto vea a ion le voy a presumir face-smile.png .