EjemploJDBC-Acceso a Bd en Java
-
Upload
paraguayoscribd -
Category
Documents
-
view
217 -
download
0
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());}
}}