EjemploJDBC-Acceso a Bd en Java

download EjemploJDBC-Acceso a Bd en Java

of 8

Transcript of EjemploJDBC-Acceso a Bd en Java

  • 8/14/2019 EjemploJDBC-Acceso a Bd en Java

    1/8

    1

    1

    Acceso a BDs en Java: JDBC

    Bases de Datos II

    2

    Introduccin

    Para hacer una aplicacin de BDs en Java senecesita disponer del driver adecuado parael SGBD.

    En nuestro caso necesitamos el de mysql.

    Ah se obtiene el archivo:

    http://dev.mysql.com/downloads/connector/j/3.0.html

    mysql-connector-java-3.0.14-production.jar

  • 8/14/2019 EjemploJDBC-Acceso a Bd en Java

    2/8

    2

    3

    Introduccin Este fichero debe estar en un sitio visible para

    Java tanto al compilar la aplicacin como alejecutarla.

    Al inicio de nuestra aplicacin debe aparecer (almenos) la siguiente biblioteca de clases:

    javac classpath mysql-connecor-java-3.0.12-production.jar;. Aplicacin.java

    java classpath mysql-connecor-java-3.0.12-production.jar;. Aplicacin

    import java.sql.*;

    4

    Introduccin

    Lo primero que hemos de hacer es ver cual es laclase que implementa al controlador JDBC:

    Y debe ser registrado para poder ser utilizado en laaplicacin (en el cdigo de la propia aplicacin)

    com.mysql.jdbc.Driver

    Class.forName(com.mysql.jdbc.Driver);DriverManager.registerDriver(new com.mysql.jdbc.Driver());

  • 8/14/2019 EjemploJDBC-Acceso a Bd en Java

    3/8

    3

    5

    Introduccin Despus se debe construir una URL a la base de

    datos para JDBC. Por ejemplo, para mysql sera de la siguiente

    forma:

    jdbc.mysql://[host][:port]/[database][?propName1][=propValue1][&propName2]=[propValue2]...

    jdbc.mysql://localhost:3306/Libros?user=usuario&password=clavejdbc:mysql://misiapepa.uv.es:3306/estancias

    6

    Crear conexin

    Una vez que se ha registrado la clase delcontrolador se crea una conexin (con el siguientemtodo esttico de la clase DriverManager):

    public static Connection getConnection(String url) throws SQLException

    string url = jdbc:mysql://localhost:3306/estancias?user=usu1&password=clave;Connection con = DriverManager.getConnection(url);

  • 8/14/2019 EjemploJDBC-Acceso a Bd en Java

    4/8

    4

    7

    Ejecucin de sentencias Se necesita crear un objeto de la clase Statement a

    partir del objeto de tipo Connection.

    Una vez creada la sentencia se pueden ejecutarconsultas:

    Statement sentencia = con.createStatement();

    //Ejemplo:ResultSet res = sentencia.executeQuery("SELECT ciudad from casas");

    ResultSet executeQuery(String SQL);int executeUpdate(String SQL); boolean execute(String SQL); //Cuando no se sabe de antemano el tipo

    8

    Ejecucin de sentencias

    El ltimo de estos mtodos devuelve true si lasenctencia contena un SELECT. En ese caso sepueden obtener los resultados llamando al mtodogetResultSet()

    que devuelve un objeto del tipoResulSet .//Ejemplo:

    tiposentencia = sentencia.execute(sentenciaSQL);if (tiposentencia){

    ResultSet res = sentencia.getResulSet();}

  • 8/14/2019 EjemploJDBC-Acceso a Bd en Java

    5/8

    5

    9

    Ejecucin de sentencias II Tambin se puede ejecutar sentencias utilizando la

    clase PreparedStatement: se utiliza en las que seva a ejecutar varias veces la misma consulta .

    Despus se rellenan los los valores que se desee:

    String Consulta =INSERT INTO tabla(usuario,email,fecha) values (?,?,?);PreparedStatement psentencia = con.prepareStatement(consulta);

    psentencia.setString(1,user); //Supongo variable user contiene el valor correcto psentencia.setNull(2,email); psetencia.setDate(3,fecha);

    //Y se ejecuta psentencia.executeUpdate();

    10

    Obtencin de resultados La clase ResultSet dispone de mtodos para

    moverse en filas y de mtodos para seleccionaruna determinada columna:

    void beforeFirst()

    void first();void afterLast();void last(); boolean next(); boolean previous();float getFloat(int numeroColumna);float getFloat(String NombreColumna);int getInt(int numeroColumna);int getInt(String NombreColumna);java.sql.Date getDate(string NOmbreColumna);int getColumnCount() //Devuelve nmero de columnasString getColumnName(int column) //Obtiene el nombre de la columnaString getColumnTypeName(int column);

  • 8/14/2019 EjemploJDBC-Acceso a Bd en Java

    6/8

    6

    11

    Obtencin de resultados El resultSet proporciona tambin una forma de

    detectar si el valor de una columna es NULL:

    boolean wasNull() //devuelve true si la ltima columna leida era NULL

    12

    import java.sql.* ;

    import java.math.*;

    class EjemploJDBCmysql{

    public static void main (String args [])

    {

    try

    {

    DriverManager. registerDriver (newcom.mysql.jdbc.Driver()); //Registro el driver

    //Obtengo una conexin

    Connection con =DriverManager. getConnection (" jdbc:mysql://localhost:3306/estancias ");

  • 8/14/2019 EjemploJDBC-Acceso a Bd en Java

    7/8

    7

    13

    Statement sentencia = con. createStatement ();ResultSet res = sentencia. executeQuery (" SELECTIdCasa,ciudad, DispDesde,DispHasta from casas ");while (res.next()){

    String s = res. getString (" ciudad ");int id = res. getInt (" IdCasa ");java.sql.Date fecha1 = res. getDate (" DispDesde ");System.out.println(id + " " + s + " " + fecha1);

    }sentencia.close();con.close();

    }catch( SQLException ex){System.out.println(" SQLException :" + ex. getMessage ());System.out.println(" SQLEState :" + ex. getSQLState ());System.out.println(" Vendor Error :" + ex. getErrorCode ());

    }}}

    14

    import java.sql.*;

    public class prujdbc{ public prujdbc()

    {}

    public static void main(String args[]){

    try

    {DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());System.out.println("Conectando...");Connection con;

    con = DriverManager.getConnection("jdbc:oracle:oci8:@",bdii01",bdii01");System.out.println("CONECTADO.");

    String query = "SELECT nombre,estilo FROM autores";Statement stmt;stmt = con.createStatement();

  • 8/14/2019 EjemploJDBC-Acceso a Bd en Java

    8/8

    8

    15

    ResultSet result = stmt.executeQuery(query);while ( result.next() )

    {String name = result.getString(1) + " " + result.getString(2);System.out.println(name);}

    result.close();stmt.close();

    String inser = "INSERT INTO autores(id,nombre,estilo,fechanacimiento) values(100,'desconocido','???','2002-01-01')";

    stmt = con.createStatement();stmt.execute(inser);stmt.close();

    con.close();}

    catch (SQLException ex){System.err.print("SQLException: ");System.err.println(ex.getMessage());}

    }}