lunes, julio 04, 2005

API Base de Datos OPENACS

Api de Base de datos en OpenACS 5.1.....

(Primera Parte)

Pasaremos ahora a explicar las funciones del API que OpenACS utiliza para comunicación con la Base de datos
En primer lugar la esta API es necesaria para tener una independencia de la BD elegida, ya que al hacer las llamadas a las funciones ACS se encargará de traducirlas al lenguaje de la BD correspondiente.
Una característica de la utilización de BD es que al contrario de lo que ocurre en otros lenguajes no necesitamos definir objetos de conexión ni manejadores de datos, incluso podemos obviar las funciones del servidor AOL para manejar la conexión a BD, todo este proceso es trasparente al usuario y OpenACS se encargará de realizarlo pudiendo concentrarnos en hacer peticiones a la BD.

Procedimientos para Obtener Información de la BD:

Normalmente la forma general de las funciones será la siguiente:
funcion identificador_variableTCL " sentencia sql" [modificadores]
Los modificadores tienen varios usos como indicar a ACS que guarde el resultado en un array etc, de momento no los utilizaremos, más adelante incluiremos algun ejemplo de su uso

Funciones:
db_1row :
Obtiene una y solo una linea correspondiente a la ejecución de la sentencia sql ligada a ella.
En caso de que el resultado no sea exactamente una fila genera un error.

Ejemplo:
db_1row select_amigo "select nombre, apellidos from amigos where amigos_id = $temp_id"

db_0or1row:
Obtiene cero o una fila correspondiente a la ejecución de la sentencia sql.
En caso de obtenerse más de una fila genera error.

ejemplo:
db_0or1row select_amigo "select nombre,apellidos from amigos where amigos_id=$temp_amigos"

db_multirow:
Obtiene multiples filas a partir de una sentencia SQL.

ejemplo:
db_multirow select_all_amigos "select nombre,apellidos from amigos"

db_foreach:
Nos permite ejecutar operaciones con cada una de las filas obtenidas de la Base de datos.
Su sintaxis es la siguiente: db_foreach variable "sentencia sql" bloque_codigo [if_no_rows bloque_codigo2]
la ultima parte de if_no_rows es opcional para permitirnos hacer alguna operación en el caso de no haberse encontrado filas, en ese caso se ejecutaría bloque_codigo2.Veamos un ejemplo

ejemplo:
db_foreach select_amigos "select nombre, apellidos from amigos" {
doc_body_append "
  • nombre=$nombre; apellido=$apellido\n"
    }
    if_no_rows {
    doc_body_append "
  • Lo siento, peno no tiene amigos k triste ¿no?.\n"
    }

    db_dml:
    Nos permite ejecutar las operaciones de modificacion sobre nuestra BD.

    ejemplo:
    db_dml borra_amigo "delete form amigos where amigos_id=$temp_amigoid"

    Con esto tendremos las operaciones basicas sobre BD, expongo otras aqui como referencia, su uso es practicamente el mismo que el de las aqui utilizadas:

    db_list: Genera una lista en tcl con los valores que devuelve la sentencia sql.En caso de no obtener ninguna fila genera una lista vacia.
    uso: dblist varble "sentencia sql"

    db_list_of_list: Es analoga a la anterior solo que cada elemento devuelto es a su vez una lista.
    dblist varble "sentencia sql"

    db_write_clob, db_write_blob, db_blob_get_file: Permiten manejar campos de la base de datos de alta capacidad.
    Por ejemplo los usamos cuando queremos almacenar un video, una foto o algo similar en la base de datos.
    su uso es el mismo que las funciones anteriores.
    funcion vrble_tcl "sentencia sql"
  • No hay comentarios: