Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Bases de Datos II
Introducción
• Para hacer una aplicación de BDs en Java se
necesita disponer del driver adecuado para
el SGBD.
• En nuestro caso necesitamos el de mysql.
http://dev.mysql.com/downloads/connector/j/3.0.html
1
Introducción
• Este fichero debe estar en un sitio visible para
Java tanto al compilar la aplicación como al
ejecutarla.
Introducción
• Lo primero que hemos de hacer es ver cual es la
clase que implementa al controlador JDBC:
com.mysql.jdbc.Driver
2
Introducción
• Después se debe construir una URL a la base de
datos para JDBC.
• Por ejemplo, para mysql sería de la siguiente
forma:
jdbc.mysql://[host][:port]/[database][?propName1][=propValue1][&propName2]=[propValue2]...
jdbc.mysql://localhost:3306/Libros?user=usuario&password=clave
jdbc:mysql://misiapepa.uv.es:3306/estancias
Crear conexión
• Una vez que se ha registrado la clase del
controlador se crea una conexión (con el siguiente
método estático de la clase DriverManager):
3
Ejecución de sentencias
• Se necesita crear un objeto de la clase Statement a
partir del objeto de tipo Connection.
Statement sentencia = con.createStatement();
//Ejemplo:
ResultSet res = sentencia.executeQuery("SELECT ciudad from casas");
Ejecución de sentencias
• El último de estos métodos devuelve true si la
senctencia contenía un SELECT. En ese caso se
pueden obtener los resultados llamando al método
getResultSet() que devuelve un objeto del tipo
ResulSet.
//Ejemplo:
tiposentencia = sentencia.execute(sentenciaSQL);
if (tiposentencia){
ResultSet res = sentencia.getResulSet();
}
4
Ejecución de sentencias II
• También se puede ejecutar sentencias utilizando la
clase PreparedStatement: se utiliza en las que se
va a ejecutar varias veces la misma consulta.
String Consulta =“INSERT INTO tabla(usuario,email,fecha) values (?,?,?)”;
PreparedStatement psentencia = con.prepareStatement(consulta);
//Y se ejecuta
psentencia.executeUpdate();
Obtención de resultados
• La clase ResultSet dispone de métodos para
moverse en filas y de métodos para seleccionar
una 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 número de columnas
String getColumnName(int column) //Obtiene el nombre de la columna
String getColumnTypeName(int column);
10
5
Obtención de resultados
• El resultSet proporciona también una forma de
detectar si el valor de una columna es NULL:
11
import java.sql.* ;
import java.math.*;
class EjemploJDBCmysql{
public static void main (String args [])
{
try
{
DriverManager.registerDriver(new
com.mysql.jdbc.Driver()); //Registro el driver
//Obtengo una conexión
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3
306/estancias");
12
6
Statement sentencia = con.createStatement();
ResultSet res = sentencia.executeQuery("SELECT
IdCasa,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());
}
}
}
13
import java.sql.*;
14
7
ResultSet result = stmt.executeQuery(query);
while ( result.next() )
{
String name = result.getString(1) + " " + result.getString(2);
System.out.println(name);
}
result.close();
stmt.close();
con.close();
}
catch (SQLException ex)
{
System.err.print("SQLException: ");
System.err.println(ex.getMessage());
}
}
}
15