Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

miércoles, 24 de julio de 2013

Conexiones y Resultados: Connection y Result

La Clase Connection:


Esta clase representa una conexión a una base de datos.

¿como nos conectamos a la base de datos?
Se crea un objeto del tipo Connection, asignandole las propiedades necesarias (tipo de base de datos, lugar donde se encuentra, usuario, contraseña, etc,), y le llama al método Open para abrirla.

Si por ejemplo queremos conectarnos a una base de datos tipo MySQL, seria asi:

           PUBLIC $Con AS NEW Connection 'definimos $Con como publica para poder ser usada en todos los módulos y formularios de la aplicación

           PUBLIC SUB Conectar()
                 $Con=Null ' anulo  por si hay conexiones ya abiertas
                 $Con.Type = "MySQL" ' definimos el tipo
                 $Con.Host = "localhost" ' definimos el servidor
                 $Con.Login = "root" ' nombre de usuario con el que conectamos
                 $Con.Port = "3306" ' puerto al que conectamos
                 $Con.Name = "Sophia" ' nombre de la base de datos a la que vamos a conectarnos
                 $Con.Password = "root123" ' contrasela del usuario
                 TRY $Con.Open() ' abrimos la conexión, y vamos a comprobar si se produce un error...
                 IF ERROR THEN
                              Message.error("Error al intentar conectarse a la base de datos")
                              PRINT ERROR.TEXT
                              PRINT ERROR.CODE
                              PRINT ERROR.WHERE
                   ENDIF

             END

Si queremos conectarnos a una base de datos tipo SQLite3, sería asi:
       PUBLIC $Con AS NEW Connection 'definimos $Con como publica para poder ser usada en todos los módulos y formularios de la aplicación

       PUBLIC SUB Conectar()
                 $Con=Null ' anulo  por si hay conexiones ya abiertas
                 $Con.Type = "sqlite3" ' definimos el tipo
                 $Con.Host = user.home & "/directorio" ' definimos directorio donde se encuentra la base de datos
                 $Con.Name = "test" ' nombre de la base de datos a la que vamos a conectarnos
                 TRY $Con.Open() ' abrimos la conexión
                 IF ERROR THEN
                              Message.error("Error al intentar conectarse a la base de datos")
                              PRINT ERROR.TEXT
                              PRINT ERROR.CODE
                              PRINT ERROR.WHERE
                   ENDIF

       END





Nota Importante:
Si hemos creado la conexión desde el Gestor de Conexiones de Gambas3, es mucho más facil,  la podemos usar directamente asi:
            PUBLIC $Con AS NEW Connection 'definimos $Con como publica para poder ser usada en todos los módulos y formularios de la aplicación

           PUBLIC SUB Conectar()
                        $Con= Connections["Connection1"]
                        $Con.Open() 'tenemos que a abrir la conexión
                        IF $Con=NULL  THEN 
                                Message.error("Error al intentar conectarse a la base de datos")
                        ENDIF

            END




Conectando a una base de datos, usando las conexiones creadas desde el Gestor de bases de datos de Gambas3


¿como nos desconectamos a la base de datos?
Para cerrar se usa el método Close.

             $Con.Close()

¿como hacemos para confirmamos una operación con los datos?

 $Con.Commit()

Al final de este articulo tenéis un ejemplo donde se insertar, edita, borra y busqueda de datos con las funciones de connection: .create, .edit, .delete, y .find


¿como hacer una consulta de modo genérica con sentencias SQL?
Se usa el método .Exec(sentencia_Sql)
Ejecuta una petición SQL dada y devuelve un objeto Result de sólo lectura que contiene el resultado de la solicitud de sentencia devolución.

  PUBLIC SUB Consulta()
           DIM $Query AS String
           $Query = "SELECT * FROM Friends WHERE Name = '" & TBXName.Text & "'"
           $Con.Exec($Query)
  END


Para más información:
http://gambaswiki.org/wiki/comp/gb.db/connection

La clase Result:

¿como operamos con los resultados de una consulta?
Usamos un objeto de la clase Result, llamando a los distintos campos para asignarlos a las variables.
Para llamar a los campos lo hacemos de esta forma:
Dim $result as result
....
$result!NombreCampo

También se puede usar:
$result["NombredeCampo"]


La clase result, tiene varios métodos para desplazarnos en las consultas: movefist, movelast, movePrevius, moveNext, moveTo


A continuación un ejemplo usando result para desplazarnos por los registros:
En este ejemplo, cagamos una base de datos con una tabla de 2 campos (nombre y edad), y mostramos los botones para que el usuario pueda desplazarse con ellos por los registros:






Código fuente:
-

-



Enlace de descarga: enlace alojado en box.com


Ejemplo  de Como abrir una conexion a Mysql y usarla: 

 

Un ejemplo completo de insertar, editar, borrar y buscar:

En este este programa vamos a poder insertar, editar, borrar y realizar busquedas en una base de datos llamada "DatosEjemplos",  que tiene una tabla llamada "Personas".
Los campos de esta tabla son: nombre, apellidos, edad y la fecha de nacimiento

La estructura del proyecto es la siguiente:


Código fuente:
Modulo ModComun:
-

-

Módulo fuente:
FormMostrarResultados
-

-

Módulo fuente:
Fmain:
-

-

Ejemplo de la aplicación funcionando:

Varias cosas a comentar:
1) El propio programa tiene la base de datos internamente, que la copia al directorio  User.home &/ ".ejemploBD"  si no la encuentra en el disco duro.
2) Si pulsáis  el botón derecho del ratón en alguna fila del ColumView, tendréis acceso al menú popup :"Editar/Borrar/Filtrar/Quitar Filtro"

3) Se han usado los métodos de la clase connection para editar, insert, borrar y filtrar información. También se podía haber echo con sentencias SQL y usando el método .Exec()

4) El esquema de la tabla Personas:
El campo Id es una llave primaria integer, la cual se autoenumera cuando le damos valor Null.

5) Las fechas se guardan internamente en la base de datos en el formato mes/dia/año, por eso para mostrarlas en el columnview uso el formateo  "dd/mm/yyyy".
Para mostrarla en el formulario Fmain (añade o edita registros), al usar un DateBox, automáticamente se formatea correctamente.

enlace de descarga: archivo alojado en Box.com

Documentación Oficial:


Referencia en gambaswiki: 

No hay comentarios:

Publicar un comentario

A falta de donativos... un poco de publicidad