86
BASE DE DATOS Luis Emilio Cabrera Crot [email protected] www.lucacrot.net/bd20151 Universidad del Bío Bío Facultad de Ciencias Empresarias IECI Mayo 2015

Desarrollo de Aplicaciones Java Sql Postgres

Embed Size (px)

DESCRIPTION

asdsdasdad

Citation preview

  • BASE DE DATOS

    Luis Emilio Cabrera [email protected]

    www.lucacrot.net/bd20151

    Universidad del Bo BoFacultad de Ciencias Empresarias

    IECI

    Mayo 2015

  • NDICE

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 2 / 86

  • NDICE

    ACCESO A BASE DE DATOS DESDE APLICACIONES

    Veremos como se ejecutan comandos SQL desde un programa enun lenguaje anfitrin como PHP, C o Java.El uso de comandos SQL desde un programa anfitrin se denomi-na SQL embebido.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 3 / 86

  • NDICE

    SQL EMBEBIDO

    Las sentencias SQL se pueden utilizar en cualquier parte del pro-grama.Las sentencias SQL deben estar claramente identificadas de ma-nera que un pre-procesador pueda tratarlas antes de invocar elcompilador del lenguaje anfitrin.Pueden existir dos inconvenientes:

    Los tipos de datos reconocidos por SQL podran no ser aceptadospor el lenguaje anfitrin y viceversa.SQL est orientado a conjuntos de datos (problema de impedancia)no as los lenguajes de programacin.

    Este problema se resuelve mediante el uso de cursores.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 4 / 86

  • NDICE

    CURSORES

    SQL opera sobre conjuntos de registros, mientras que un leguajeanfitrin como C no soporta (de forma limpia) conjunto de regis-tros.Un cursor permite recuperar las filas de una relacin una por una.Se puede declarar un cursor sobre cualquier relacin o consultaSQL.

    Un curso se puede abrir, posicionando el cursor justo antes de laprimera fila.Leer la siguiente fila, mover el cursor o cerrar el cursor.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 5 / 86

  • NDICE

    INTERACCIN CON LA BASE DE DATOS (CURSOR)EXPLICITOS

    Cursor explicito: SELECT recupera cero o una o ms tuplas.

    Se requiere:Declarar el cursor.Abrir el cursor (OPEN).Leer los datos (FETCH).Cerrar el cursor y liberar los recursos (CLOSE).

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 6 / 86

  • NDICE

    INTERACCIN CON LA BASE DE DATOS (CURSOR)EXPLICITOS

    Declaracin del cursor: (dos formas)

    FORMA 1 DECLARE. . .

    CURSOR nombreCursor ISinstruccion SELECT

    FORMA 2 DECLARE. . .CURSOR nombreCursor (param1 tipo1 , . . . ,

    paramN tipoN ) ISinstruccion SELECT

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 7 / 86

  • NDICE

    INTERACCIN CON LA BASE DE DATOS (CURSOR)

    Abrir el cursorOPEN nombre_cursor ;OPEN nombre_cursor (valor1 , valor2 , . . . , valorN ) ;

    Recuperar los datos del BufferFETCH nombre_cursor INTO lista_variables ;FETCH nombre_cursor INTO registro_PL /SQL ;

    Cerrar el cursorCLOSE nombre_cursor ;

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 8 / 86

  • NDICE

    INTERACCIN CON LA BASE DE DATOS (CURSOR)

    dec la rac ion cursorCURSOR amigas IS

    SELECT Nombre FROM amigosWHERE sexo= 'F ' ;

    a b r i r cursorOPEN amigas ;r e c o r r e r cursorFETCH amigas INTO elNombre ;c e r r a r cursorCLOSE amigas ;

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 9 / 86

  • NDICE API

    API

    Una alternativa al uso de SQL embebido.Una API nos ofrece una interfaz estandarizada para objetos y pro-cedimientos.Permite pasar sentencias SQL desde un lenguaje anfitrin y pre-sentar conjuntos de tuplas de una forma amigable.Conectarse de manera remota a diversos SGBD.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 10 / 86

  • BASE DE DATOS DE PRUEBA

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 11 / 86

  • BASE DE DATOS DE PRUEBA

    BASE DE DATOS DE PRUEBA

    CREATE DATABASE Prueba ;CREATE TABLE nombres (id SERIAL pr imary key , nombre char (50) ) ;

    INSERT INTO nombres (nombre ) values ( ' L izbe th ' ) , ( ' Paola' ) , ( ' Maria ' ) , ( ' Pedro ' ) , ( ' Laura ' ) ;

    CREATE TABLE usuarios (id SERIAL pr imary key , nombre varchar (50) , clave

    varchar (50) ) ;

    INSERT INTO usuarios (nombre ,clave ) values ( ' L izbe th ' ,md5 ( ' 123 ' ) ) , ( ' Paola ' ,md5 ( ' 456 ' ) ) , ( ' Maria ' ,md5 ( ' 789 ') ) , ( ' Pedro ' ,md5 ( ' 012 ' ) ) , ( ' Laura ' ,md5 ( ' 345 ' ) ) ;

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 12 / 86

  • SQL EMBEBIDO EN JAVA

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 13 / 86

  • SQL EMBEBIDO EN JAVA

    ODBC Y JDBC

    ODBC (Open DataBase Connectivity) y JDBC (Java DataBase Con-nectivity) tambin permiten la integracin de SQL con lenguaje an-fitrin mediante una API.Ambos ofrecen una API y permiten el uso de un nico ejecutablepara acceder a diferentes SGBD sin re-compilacin.Por lo tanto, una aplicacin que usa ODBC o JDBC es indepen-diente del SGBD.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 14 / 86

  • SQL EMBEBIDO EN JAVA

    CLASES E INTERFACES JDBC

    Todos los controladores son manejados por la clase DriverMana-ger.Los pasos necesarios para enviar una consulta de base de datosa una fuente de datos y obtener los resultados son:

    1 Cargar el controlador JDBC.2 Conectarse a la fuente de datos.3 Ejecutar las sentencias SQL.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 15 / 86

  • SQL EMBEBIDO EN JAVA

    CARGAR EL CONTROLADOR

    Cargar un controlador JDBC:Class .forName ( " o rac le / jdbc . d r i v e r . O rac led r i ve r " ) ;

    Para registrar el controlador se puede incluir el controlador con laopcin:Djdbc .drivers=oracle /jdbc .driver

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 16 / 86

  • SQL EMBEBIDO EN JAVA

    JDBC: EXCEPTIONS - WARNINGS

    La mayora de las operaciones de java.sql pueden generar un SQ-LException si ocurre un error.SQLWarning es una subclase no tan severa de SQLException.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 17 / 86

  • SQL EMBEBIDO EN JAVA ORACLE SQL Y JAVA

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 18 / 86

  • SQL EMBEBIDO EN JAVA ORACLE SQL Y JAVA

    ORACLE SQL Y JAVA: CONEXIN

    impor t java .sql . * ;/ / En este paquete se encuentran una se r i e de clases

    que permiten t r a b a j a r con Bases de datos .c lass dbAccess {p u b l i c s t a t i c vo id main (String args [ ] ) throws

    SQLException {DriverManager .registerDriver (new oracle .jdbc .

    driver .OracleDriver ( ) ) ;Connection conn = DriverManager .getConnection ( "

    jdbc : o rac le : t h i n : @oracle . localdomain :1521: o r c l ", " username " , " password " ) ;

    System .out .println ( "Me conecte :) " ) ;}

    }

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 19 / 86

  • SQL EMBEBIDO EN JAVA ORACLE SQL Y JAVA

    ORACLE SQL Y JAVA: USOimpor t java .sql . * ;c lass getOneRow {

    p u b l i c s t a t i c vo id main (String args [ ] ) throws SQLException {

    DriverManager .registerDriver (new oracle .jdbc .driver .OracleDriver ( ) ) ;

    Connection conn = DriverManager .getConnection ( "jdbc : o rac le : t h i n :@IP:PUERTO: o r c l " , "USER" , "PASSWORD" ) ;

    Statement stmt = conn .createStatement ( ) ;ResultSet rs = stmt .executeQuery ( "SELECT NOMBRE

    FROM NOMBRES WHERE ID=1 " ) ;rs .next ( ) ;String elNombre = rs .getString ( "NOMBRE" ) ;System .out .println ( " El Nombre con ID = 1 es " +

    elNombre ) ;stmt .close ( ) ;

    }}

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 20 / 86

  • SQL EMBEBIDO EN JAVA POSTGRESQL Y JAVA

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 21 / 86

  • SQL EMBEBIDO EN JAVA POSTGRESQL Y JAVA

    POSTGRESQL Y JAVA: CONEXIN

    package postgresql ;

    impor t java .sql . * ;impor t java .util .logging .Level ;impor t java .util .logging .Logger ;/ / En este paquete se encuentran una se r i e de clases que permiten

    t r a b a j a r con Bases de datos .c lass dbAccess {p u b l i c s t a t i c vo id main (String args [ ] ) throws SQLException

    {String database = " Prueba " ;String user = " postgres " ;String pass = " 123456 " ;DriverManager .registerDriver (new org .postgresql .Driver ( ) ) ;Connection conn = DriverManager .getConnection ( " jdbc : pos tg resq l

    : / / 1 2 7 . 0 . 0 . 1 : 5 4 3 2 / "+database+" ? " ,user ,pass ) ;System .out .println ( "Me conecte :) " ) ;

    }}

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 22 / 86

  • SQL EMBEBIDO EN JAVA POSTGRESQL Y JAVA

    POSTGRESQL Y JAVA: USO

    package postgresql ;

    impor t java .sql . * ;c lass getOneRow {

    p u b l i c s t a t i c vo id main (String args [ ] ) throws SQLException{String database = " Prueba " ;String user = "USUARIO" ;String pass = "PASSWORD" ;DriverManager .registerDriver (new org .postgresql .Driver ( ) ) ;Connection conn = DriverManager .getConnection ( " jdbc : pos tg resq l

    : / / 1 2 7 . 0 . 0 . 1 : 5 4 3 2 / "+database+" ? " ,user ,pass ) ;Statement stmt = conn .createStatement ( ) ;ResultSet rs = stmt .executeQuery ( "SELECT * FROM nombres " ) ;wh i le (rs .next ( ) ) {

    String elNombre = rs .getString ( " nombre " ) ;System .out .println ( "Se l lama " + elNombre ) ;

    }stmt .close ( ) ;

    }} / / end c lase getRows

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 23 / 86

  • SQL EMBEBIDO EN JAVA POSTGRESQL Y JAVA

    COMPILAR DESDE TERMINAL

    javac cp postgresql .jar : . dbAccess .java

    java cp postgresql .jar : . dbAccess

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 24 / 86

  • SQL EMBEBIDO EN JAVA SQL SERVER Y JAVA

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 25 / 86

  • SQL EMBEBIDO EN JAVA SQL SERVER Y JAVA

    SQL SERVER Y JAVA: CONEXIN

    impor t java .sql . * ;

    c lass dbAccess {p u b l i c s t a t i c vo id main (String args [ ] ) throws

    SQLException {String database = "BASEdeDATOS" ;String user = "USUARIO" ;String pass = "PASSWORD" ;DriverManager .registerDriver (new com .microsoft .

    sqlserver .jdbc .SQLServerDriver ( ) ) ;Connection conn = DriverManager .getConnection ( "

    jdbc : sq l se rve r : / / l o c a l h o s t ; instanceName=SQLEXPRESS; databaseName="+database+" ; user= "+user+" ; password="+pass+" ; " ) ;

    System .out .println ( "Me conecte :) " ) ;}

    }

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 26 / 86

  • SQL EMBEBIDO EN JAVA SQL SERVER Y JAVA

    SQL SERVER Y JAVA: USO

    impor t java .sql . * ;c lass getOneRow {

    p u b l i c s t a t i c vo id main (String args [ ] ) throws SQLException {String database = " Prueba1 " ;String user = "USUARIO" ;String pass = "PASSWORD" ;DriverManager .registerDriver (new com .microsoft .sqlserver .jdbc

    .SQLServerDriver ( ) ) ;Connection conn = DriverManager .getConnection ( " jdbc : sq l se rve r

    : / / l o c a l h o s t ; instanceName=SQLEXPRESS; databaseName="+database+" ; user= "+user+" ; password="+pass+" ; " ) ;

    Statement stmt = conn .createStatement ( ) ;ResultSet rs = stmt .executeQuery ( "SELECT * FROM nombres " ) ;wh i le (rs .next ( ) ) {

    String elNombre = rs .getString ( " nombre " ) ;System .out .println ( "Se l lama " + elNombre ) ;

    }stmt .close ( ) ;

    }}

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 27 / 86

  • SQL EMBEBIDO EN JAVA SQLITE Y JAVA

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 28 / 86

  • SQL EMBEBIDO EN JAVA SQLITE Y JAVA

    SQLITE Y JAVA: CONEXIN

    impor t java .sql . * ;

    c lass dbAccess {p u b l i c s t a t i c vo id main (String args [ ] ) throws

    SQLException{

    String database = " BasedeDatos " ;String user = "USUARIO" ;String pass = "PASSWORD" ;DriverManager .registerDriver (new org .sqlite .

    JDBC ( ) ) ;Connection conn = DriverManager .getConnection ( "

    jdbc : s q l i t e : "+database ) ;System .out .println ( "Me conecte :) " ) ;

    }}

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 29 / 86

  • SQL EMBEBIDO EN JAVA SQLITE Y JAVA

    SQLITE Y JAVA: USO

    package sqlite ;

    impor t java .sql . * ;

    c lass getOneRow {p u b l i c s t a t i c vo id main (String args [ ] ) throws SQLException {

    String database = " BasedeDatos " ;String user = "USUARIO" ;String pass = "PASSWORD" ;DriverManager .registerDriver (new org .sqlite .JDBC ( ) ) ;Connection conn = DriverManager .getConnection ( " jdbc : s q l i t e : "+

    database ) ;Statement stmt = conn .createStatement ( ) ;ResultSet rs = stmt .executeQuery ( "SELECT * FROM nombres " ) ;wh i le (rs .next ( ) ) {

    String elNombre = rs .getString ( " nombre " ) ;System .out .println ( "Se l lama " + elNombre ) ;

    }stmt .close ( ) ;

    }}

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 30 / 86

  • SQL EMBEBIDO EN C

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 31 / 86

  • SQL EMBEBIDO EN C POSTGRESQL Y C

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 32 / 86

  • SQL EMBEBIDO EN C POSTGRESQL Y C

    LIBRERIA Y VARIABLE

    En el caso de C y PostgreSQL es necesario ubicar la librera libpq-fe.hla cual se encuentra en la carpeta include del directorio de instalacinde PostgreSQL

    EJEMPLO (MAC)

    # inc lude " / L i b r a r y / PostgreSQL / 9 . 4 / i nc lude / l i bpqfe . h "

    Para almacenar los resultados provenientes de la base de datos Post-greSQL, es necesario declarar variables que permitan esta accin. Pa-ra ello la libreria anterior tiene incluido el tipo PGresult.

    PGresult *variable1 , *variabl2 ;

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 33 / 86

  • SQL EMBEBIDO EN C POSTGRESQL Y C

    CONEXIN A LA BASE DE DATOS

    La librera libpq-fe.h de PostgreSQL incluye un tipo de dato para alma-cenar la conexin a la base de datos. Es necesario tener declarada porlo menos una variable de conexin.

    DECLARACINPGconn *conn ;

    Utilizando la variable de conexin, establecemos la misma con la fun-cin PQsetdbLogin():

    EJEMPLO

    conn=PQsetdbLogin ( " IP " , " 5432 " ,NULL ,NULL , " BaseDeDatos " , "USUARIO" , "PASSWORD" ) ;

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 34 / 86

  • SQL EMBEBIDO EN C POSTGRESQL Y C

    OTRAS VARIABLES DEFINIDAS EN LIBPQ-FE.H

    Para verificar el estado de la conexin podemos utilizar la funcin PQs-tatus() la cual retorna verdadero o falso dependiendo si la conexin serealizo correctamente o no.

    ESTADO DE LA CONEXINPQstatus (conn )

    Si deseamos terminar la conexin con la base de datos, podemos utili-zar la funcin PQfinish(), la cual cortara dicha conexin.

    TERMINAR LA CONEXIN

    PQfinish (conn ) ;

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 35 / 86

  • SQL EMBEBIDO EN C POSTGRESQL Y C

    EJEMPLO DE CONEXIN

    # inc lude < s t d i o . h># inc lude < s t d l i b . h># inc lude < s t r i n g . h># inc lude " / L i b r a r y / PostgreSQL / 9 . 4 / i nc lude / l i bpqfe . h "# inc lude # inc lude / / Var iab le " conn " de l Tipo Conexion PGconnPGconn *conn ;i n t main ( ) {/ * * * * * * l o g i n a l a base de datos * * * * * * /conn=PQsetdbLogin ( " l o c a l h o s t " , " 5432 " ,NULL ,NULL , " Prueba " , " postgres " , " "

    ) ;printf ( " Conectando a l a BD\ n " ) ;i f (PQstatus (conn ) != CONNECTION_BAD ) {printf ( "DB conectada \ n " ) ;PQfinish (conn ) ;fflush (stdin ) ;

    } e lseprintf ( " Al conectarse a l a BD\ n " ) ;

    r e t u r n 0 ;}

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 36 / 86

  • SQL EMBEBIDO EN C POSTGRESQL Y C

    EJEMPLO MANEJO BASE DE DATOSPGresult *elem , *elem1 ; / / v a r i a b l e resu l tadochar query [ 250 ] , *resevi=NULL , *res1=NULL ;i n t i ,j ,k ;strcpy (query , "SELECT * FROM nombres ; " ) ;/ / obtengo l a cant idad de f i l a s ( tup las ) y columnas (

    campos )elem=PQexec (conn ,query ) ;printf ( " Consulta : % s \ n " ,query ) ;i n t tuplas = PQntuples (elem ) ;i n t campos = PQnfields (elem ) ;printf ( " t up las : % i \ n campos : % i \ n " ,tuplas ,campos ) ;/ / r eco r ro l a t ab l a r e s u l t a n t e de l a consu l ta y

    muestro sus resu l tadosf o r (j=0;j

  • SQL EMBEBIDO EN C POSTGRESQL Y C

    COMPILAR DESDE TERMINAL

    COMPILAR EN LINUXgcc dbaccess .c o EJECUTABLE I /usr /include /postgresql L /usr /

    include /postgresql lpq fnostackprotector

    . / EJECUTABLE

    COMPILAR EN MACgcc dbaccess .c o EJECUTABLE I /Library /PostgreSQL / 9 . 4 /include /

    postgresql / L /Library /PostgreSQL / 9 . 4 /include /postgresql / lpq fnostackprotector

    . / EJECUTABLE

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 38 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL)

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 39 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONFIGURACIN PREVIA

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 40 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONFIGURACIN PREVIA

    API NATIVA EN POSTGRESQL

    Para trabajar con la API nativa de PostgreSQL en PHP,deberemos haber compilado el intrprete con soporte para esteSGBD, o bien disponer ya del binario de PHP precompilado con elsoporte incorporado.En el caso de tenerlo que compilar, nicamente debemos indicarcomo opcin --with-pgsql.PSQL es el interprete de comandos de Postgres.Posteriormente, o en el caso de que ya dispongamos del binario,podemos validar que el soporte para PostgreSQL est incluidocorrectamente en el intrprete con la ejecucin del siguientecomando:

    $ php i | grep PostgreSQL

    PDO Driver f o r PostgreSQL => enabledPostgreSQL (libpq ) Version => 9 .3 .4

    $

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 41 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONFIGURACIN PREVIA

    COMPRUEBA LA CONEXIN DE PHP CONPOSTGRESQL

    Otra alternativa es probar grficamente por medio del navegadorsi el modulo est activo y/o configurado.Para eso debemos crear un archivo php con el siguiente cdigo yejecutarlo en el navegador.

    CDIGO PGSQL.PHP

    Si aparece una ventana en blanco es que falta instalar el modulo pgsql.Este archivo debera mostrar un 1 si est funcionando correctamente.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 42 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONFIGURACIN PREVIA

    CONFIGURACIN A TENER EN CUENTA

    PHP proporciona unos parmetros de configuracin que nospermitirn controlar algunos aspectos del funcionamiento de lasconexiones con el SGBD, y las propias funciones de trabajo conla base de datos.En cuanto a los parmetros, debern situarse en el archivophp.ini, o bien configurarse para nuestra aplicacin en concretodesde el servidor web. Destacan los siguientes:

    pgsql.allow_persistent: indica si vamos a permitir conexionespersistentes a PostgreSQL. Los valores posibles son true o false.pgsql.max_persistent: nmero mximo de conexionespersistentes permitidas por proceso.pgsql.max_links: nmero mximo de conexiones permitidas porproceso, incluyendo las persistentes.pgsql.auto_reset_persistent: detecta automticamenteconexiones persistentes cerradas y las elimina.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 43 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONFIGURACIN PREVIA

    INSTALAR MODULO PGSQL EN DEBIAN/UBUNTULINUX

    Instalar el siguiente paquete y luego reiniciar apache.Despus probar nuevamente el archivo pgsql.php.

    COMO ROOT INSTALA EL SIGUIENTE PAQUETE# aptget i n s t a l l php5pgsql

    LUEGO REINICIAR APACHE (COMO ROOT)# apache2ct l r e s t a r t

    # / e tc / i n i t . d / apache2 r e s t a r t

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 44 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONFIGURACIN PREVIA

    INSTALAR MODULO PGSQL EN WINDOWS

    EN EL ARCHIVO DE CONFIGURACIN DE PHP PHP.INI DESCOMENTALAS SIGUIENTES LINEAS (ELIMINAR EL ;)

    extension=php_bz2.dllextension=php_fileinfo.dllextension=php_gd2.dllextension=php_mysql.dllextension=php_mysqli.dllextension=php_pgsql.dllextension=php_pdo_pgsql.dll

    Luego reinicia apache.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 45 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONFIGURACIN PREVIA

    INSTALAR MODULO PGSQL EN WINDOWS

    Si php_pgsql.dll y php_pdo_pgsql.dll no estn en la carpeta de ins-talacin de PHP, puedes bajar el archivo comprimido y aadir la ru-ta directa como por ejemplo: extension=C:/php/ext/php_pgsql.dllo copiar los archivos a la carpeta de instalacin.El directorio de instalacin de PHP si instalaron WAMPP deberaser: C:\wamp\bin\php\php5.3.9\ext\ y dentro de el ubicar losarchivos.Luego reinicia apache.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 46 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONFIGURACIN PREVIA

    INSTALAR MODULO PGSQL EN MAC

    Probando PSQL en la terminal

    $ psql

    Si el comando anterior entrega un mensaje de error referente a que elcomando no existe, lo que tenemos que hacer es lo siguiente:

    $ which psql

    Si el comando anterior arroja algo como /usr/bin/psql Esta apuntan-do al path de instalacin por defecto del gestor y no ha donde aca-bamos de instalarlo. Para resolver ese problema tenemos que editarnuestro archivo bash_profile.

    $ nano ~/bash_profile

    y aadimos la siguiente linea:

    expor t PATH=/Library /PostgreSQL / 9 . 4 /bin :$PATH

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 47 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONFIGURACIN PREVIA

    INSTALAR MODULO PGSQL EN MAC

    Si al abrir el archivo notas que ya tienes una entrada con export, lonico que tienes que hacer es agregar /Library/PostgreSQL/9.4/binen alguna parte antes de $PATH, teniendo el cuidado de separar elpath de otros usando :, al final deberas de tener algo como:

    expor t PATH=/opt /local /bin : / opt /local /sbin : / Library /PostgreSQL / 9 . 4 /bin :$PATH9.4 debe ser remplazado por la versin de postgreSQL que acabas de instalar

    Escribimos una vez ms en la consola

    $ source ~ / .bash_profile

    Por ltimo probamos que este funcionando:

    $ which psql

    Y si todo esta bien debemos debemos de obtener algo como

    /Library /PostgreSQL / 9 . 4 /bin /psql

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 48 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 49 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    ESTABLECIENDO LA CONEXIN

    Por lo que respecta a la utilizacin de la API para la conexin yconsulta de bases de datos, empezaremos con un ejemplo:

    CONEXION.PHP

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 50 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    ESTABLECIENDO LA CONEXIN

    En las lneas anteriores, se establece la conexin a la base de datosseleccionada con que se va a trabajar y comprobamos que se harealizado correctamente.

    El cdigo es bastante explcito y la mayora de errores al respectosuelen deberse a una mala configuracin de los permisos del usuariosobre la base de datos con la que debe trabajar.

    Conviene estar muy atento, sobre todo a las direcciones de origen de laconexin, ya que, aunque podemos usar localhost como nombre deequipo, si el intrprete y el SGBD estn en el mismo servidor, sueleocurrir que PHP resuelve localhost al nombre real del equipo e intentaconectarse con esta identificacin.

    As pues, debemos examinar cuidadosamente los archivos de registrode PostgreSQL y los usuarios y privilegios del mismo si falla la conexin.

    Para establecer una conexin persistente, debemos utilizar la funcinpg_pconnect() con los mismos parmetros de pg_connect().

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 51 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    PARMETROS DE CONSULTAS

    MUESTRADB.PHP

    La funcin pg_query() se utiliza para lanzar la consulta a la basede datos.El resultado de la consulta se almacena an $ejecquery.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 52 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    PARMETROS DE CONSULTAS

    Para comprobar errores, la API de PostgreSQL distingue entre un errorde conexin, y errores sobre los recursos devueltos. En el primer caso,deberemos usar pg_connection_status(), mientras que en elsegundo podemos optar por pg_last_error() o bienpg_result_error($recurso) para obtener el mensaje de error quepueda haber devuelto un recurso en concreto.

    La funcin pg_query() puede devolver los siguientes resultados:FALSE si ha habido un error.Una referencia a una estructura si la sentencia ha tenido xito.

    La funcin pg_affected_rows($recurso) nos permite conocer elnmero de filas que se han visto afectadas por sentencias deactualizacin, borrado o insercin. Esta funcin deber recibir comoparmetro el recurso devuelto por la funcin pg_query().

    La funcin pg_num_rows($recurso) nos permite conocer el nmerode filas devuelto por sentencias de consulta.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 53 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    PARMETROS DE CONSULTAS

    Una vez obtenido el recurso a partir de los resultados de la consulta,PHP proporciona multitud de formas de iterar sobre sus resultados ode acceder a uno de ellos directamente. Comentamos las ms desta-cadas:

    $fila=pg_fetch_array($recurso,)

    Esta funcin va iterando sobre el recurso, devolviendo una filacada vez, hasta que no quedan ms filas y devuelve FALSE. Laforma del array devuelto, depender del parmetro que puede tomar estos valores:

    PG_NUM: devuelve un array con ndices numricos para loscampos. Es decir, en $fila[0] tendremos el primer campo delSELECT, en $fila[1], el segundo, etc.PG_ASSOC: devuelve un array asociativo donde los ndices son losnombres de campo o alias que hayamos indicado en la sentenciaSQL.PG_BOTH: devuelve un array con los dos mtodos de acceso.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 54 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    PARMETROS DE CONSULTAS

    MUESTRADB.PHP

    IDNombre

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 55 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    PARMETROS DE CONSULTAS

    MUESTRADB.PHP

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    PARMETROS DE CONSULTAS

    $objeto=pg_fetch_object($recurso)Esta funcin va iterando sobre los resultados, devolviendo unobjeto cada vez, de forma que el acceso a los datos de cadacampo se realiza por medio de las propiedades del objeto. Aligual que en el array asociativo, hay que vigilar con los nombresde los campos en consulta, evitando que devuelva campos con elmismo nombre fruto de combinaciones de varias tablas, ya quesolo podremos acceder al ltimo de ellos.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 57 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    PARMETROS DE CONSULTAS

    Podemos pasar a la funcin pg_fetch_object() un segundoparmetro para indicar la fila concreta que queremos obtener:

    $resultado = pg_fetch_all($recurso)Esta funcin devuelve toda la hoja de datos correspondiente a$recurso; es decir, una array con todas las filas y columnas queforman el resultado de la consulta.

    $exito=pg_result_seek($recurso,$fila)

    Esta funcin permite mover el puntero dentro de la hoja deresultados representada por $recurso hasta la fila quedeseemos. Deben tomarse las mismas consideraciones que en lafuncin mysql_data_seek().

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 58 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    OTROS PARMETROS DE CONSULTAS

    Al igual que en MySQL, PHP tambin proporciona funcionesespecficas para trabajar con algunos aspectos particulares dePostgreSQL. Al tener ste ms funcionalidad que se aleja de loestndar debido a su soporte a objetos, estas funciones cobrarnms importancia. A continuacin comentamos las msdestacadas:

    pg_field_name, pg_field_num, pg_field_size,pg_field_type: estas funciones proporcionan informacin sobrelos campos que integran una consulta. Sus nombres sonsuficientemente explcitos acerca de su cometido.pg_last_oid: esta funcin nos de vuelve el OID obtenido por lainsercin de una tupla si el recurso que recibe como parmetro esel correspondiente a una sentencia INSERT. En caso contrariodevuelve FALSE.pg_lo_create, pg_lo_open, pg_lo_export, pg_lo_import,pg_lo_read, pg_lo_write: estas funciones (entre otras)facilitan el trabajo con objetos grandes (LOB) en PostgreSQL.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 59 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    Las funciones pg_lo_import y pg_lo_export pueden tomararchivos como parmetros, facilitando la insercin de objetosbinarios en la base de datos.

    EJEMPLO

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 60 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    CERRAR LA CONEXIN

    Finalmente, comentaremos las funciones de liberacin y desconexin.En el primer caso, PHP realiza un excelente trabajo liberando recursosde memoria cuando la ejecucin en curso ya no se van a utilizar ms.Aun as, si la consulta devuelve una hoja de datos muy grande, puedeser conveniente liberar el recurso cuando no lo necesitemos.

    Por lo que respecta al cierre de la conexin, tampoco suele ser ne-cesario, ya que PHP cierra todas las conexiones al finalizar la ejecu-cin y, adems, el cierre siempre est condicionado a la configura-cin de las conexiones persistentes. Tal como ya hemos comentado,si activamos las conexiones persistentes (o bien hemos conectado conpg_pconnect), esta funcin no tiene ningn efecto y, en todo caso,ser PHP quien decida cundo se va a cerrar cada conexin.

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 61 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    ARCHIVO CONEXION.PHP

    Vamos a crear el archivo PHP que realizar la conexin con Post-greSQL.

    CONEXION.PHP

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 62 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) CONECTAR PHP Y LA BASE DE DATOS

    ARCHIVO INDEX.PHP (HEAD)

    Toda pagina que utilice la base de datos debe tener en el Head el in-clude del archivo de conexin.

    < !DOCTYPE html>

    < t i t l e >Prueba PostgreSQL< / t i t l e >

    < / head>

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 63 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: MOSTRAR TABLAS

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 64 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: MOSTRAR TABLAS

    ARCHIVO INDEX.PHP (BODY)

    IDNombre

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 65 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: MOSTRAR TABLAS

    RESULTADO CONEXIN PHP Y POSTGRESQL

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 66 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: REGISTRAR USUARIO

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 67 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: REGISTRAR USUARIO

    ARCHIVO INDEX.PHP (BODY)

    Iniciar Sesion : < /div>

    Usuario : < /td>

    Contrase&ntilde ;a : < /td>

    Repita Contrase&ntilde ;a : < /td>

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 68 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: REGISTRAR USUARIO

    ARCHIVO INDEX.PHP (RESULTADO)

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 69 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: REGISTRAR USUARIO

    ARCHIVO MUESTRADB.PHP (BODY)

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: REGISTRAR USUARIO

    RESULTADO REGISTRAR USUARIO

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 71 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: VALIDACIN USUARIO

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 72 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: VALIDACIN USUARIO

    ARCHIVO INDEX.PHP (BODY)

    Iniciar Sesion : < / d i v >< / h4>

    < t ab le >< t r >< td>Usuario : < / td>< td>< inpu t type="TEXT" name=" user " value=" ">< / td>< / t r >< td>Contrase&ntilde ;a : < / td>< td>< inpu t type=" password " name=" cont ra " value=" ">< / td>

    < / t r >< / t ab l e >< i npu t type=" submit " name=" Ent ra r " value=" En t ra r ">< / d i v

    >< / td>< td>< / td>< / t r >< / t ab l e >< / d i v >< / form>< / body>< / html>LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 73 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: VALIDACIN USUARIO

    ARCHIVO INDEX.PHP (RESULTADO)

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 74 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: VALIDACIN USUARIO

    ARCHIVO MUESTRADB.PHP (BODY)

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: VALIDACIN USUARIO

    RESULTADO VALIDAR USUARIO

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 76 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: ACTUALIZAR USUARIO

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 77 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: ACTUALIZAR USUARIO

    ARCHIVO INDEX.PHP (BODY)

    Iniciar Sesi&oacute ;n : < / d i v >< / h4>

    < tab le >< t r >< td>Usuario : < / td>< td>< inpu t type=" t e x t " name=" user " value=" " requ i red>< / td>< / t r >< t r >< td>Contrase&ntilde ;a Actual : < / td>< td>< inpu t type=" password " name=" cont ra " value=" " requ i red>< / td>< / t r >< t r >< td>Nueva Contrase&ntilde ;a : < / td>< td>< inpu t type=" password " name=" updt " value=" " requ i red>< / td>< / t r >< / t ab l e >< inpu t type=" submit " name=" Ent ra r " value=" A c t u a l i z a r ">< / d i v >< / td>< td>< / td>< / t r >< / t ab l e >< / d i v >< / form>< / body>< / html>

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 78 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: ACTUALIZAR USUARIO

    ARCHIVO INDEX.PHP (RESULTADO)

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 79 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: ACTUALIZAR USUARIO

    ARCHIVO MUESTRADB.PHP (BODY)

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: ACTUALIZAR USUARIO

    RESULTADO ACTUALIZAR USUARIO

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 81 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: ELIMINAR USUARIO

    NDICE

    1 BASE DE DATOS DE PRUEBA

    2 SQL EMBEBIDO EN JAVAOracle SQL y JavaPostgreSQL y JavaSQL Server y JavaSQLite y Java

    3 SQL EMBEBIDO EN CPostgreSQL y C

    4 SQL EMBEBIDO EN PHP (POSTGRESQL)Configuracin previaConectar PHP y la base de datosEjemplo: Mostrar TablasEjemplo: Registrar UsuarioEjemplo: Validacin UsuarioEjemplo: Actualizar UsuarioEjemplo: Eliminar Usuario

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 82 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: ELIMINAR USUARIO

    ARCHIVO INDEX.PHP (BODY)

    Iniciar Sesi&oacute ;n : < / d i v >< / h4>

    < tab le >< t r >< td>Usuario : < / td>< td>

    < s e l e c t name=" usuar io ">< / op t ion>

    < / s e l e c t >< / td>< / t r >< t r >< td>Contrase&ntilde ;a : < / td>< td>< inpu t type=" password " name=" cont ra " value=" " requ i red>< / td>< / t r >< / t ab l e >< inpu t type=" submit " name=" Ent ra r " value=" E l im ina r ">< / d i v >< / td>< td>< / td>< / t r >< / t ab l e >< / d i v >< / form>

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 83 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: ELIMINAR USUARIO

    ARCHIVO INDEX.PHP (RESULTADO)

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 84 / 86

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: ELIMINAR USUARIO

    ARCHIVO MUESTRADB.PHP (BODY)

  • SQL EMBEBIDO EN PHP (POSTGRESQL) EJEMPLO: ELIMINAR USUARIO

    RESULTADO ELIMINAR USUARIO

    LUIS EMILIO CABRERA CROT (UBB) BD1 MAY 2015 86 / 86

    Base de Datos de PruebaSQL Embebido en JavaSQL Embebido en CSQL Embebido en PHP (postgreSQL)