Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JDBCGDFGD
JDBCGDFGD
Java
import java.sql.*;
public class TestDriver {
public static void main(String[] Args) {
. . .
}//fin de main
. . .
}//fin de clase TestDriver
Java: Excepciones-I
Java: Excepciones-II
try {
// Code that could generate an exception goes
here.
// If an exception is generated, the catch block
below
// will print out information about it.
} catch(SQLException ex) {
System.err.println("SQLException: " +
ex.getMessage());
ex.printStackTrace();
System.exit(1);
}
JDBC
Introduccin
JDBC drivers
JDBC consta de un
Ms informacion en:
JDBC tutorial
http://java.sun.com/docs/book/tutorial/j
dbc
Lista de drivers
http://java.sun.com/products/jdbc
http://industry.java.sun.com/products/jd
bc/drivers
java.sql API
http://java.sun.com/j2se/1.4/docs/api/ja
va/sql/package-summary.html
Cargar el driver
// cargar las clases relacionadas con sql
. . .
// carga el driver usando el metodo Class.forName()
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException cnfe) {
System.out.println("Couldn't find the driver!");
System.out.println("Let's print a stack trace, and
exit.");
cnfe.printStackTrace();
System.exit(1);
}
// Si el driver no esta disponible, el mtodo
forName() //emitira una excepcion del tipo
//ClassNotFoundException.
Cargar el driver II
java -Djdbc.drivers=org.mysql.Driver
myaplicacion
jdbc:nombre_driver_base://host:puerto
/nombre_de_la_base
Establecer la conexin
Connection connection = null;
connection =
DriverManager.getConnection("jdbc:pos
tgresql:peliculas",
"username","password");
_____________________________
Ver Ejemplo1
-> programa trivial
Ver Ejemplo 1_5 (NO) -> usando java -Djdbc...
Opcionalmente conseguir
informacin sobre la base
import java.sql.DatabaseMetaData
//cargar driver
//conectarse a la base
. . .
DatabaseMetaData dbMetaData = connection.getMetaData();
String productName =
dbMetaData.getDatabaseProductName();
System.out.println("Database: " + productName);
String productVersion =
dbMetaData.getDatabaseProductVersion();
System.out.println("Version: " + productVersion);
// check if "actor" table is there
ResultSet tables = dbMetaData.getTables(null, null, "actor",
null);
if (tables.next()) {
System.out.println("Table exists");
}
-----Ejemplo1_6
http://java.sun.com/j2se/1.3/docs/api/java/sql/DatabaseMetaData.html
Si se desea modificar la
Base
Entonces se ejecuta:
executeUpdate(string); en lugar de
executeQuery(string) (donde string
contiene UPDATE, INSERT o DELETE);
SetQueryTimeout se puede usar para
especificar cuanto se espera antes de
abortar la transaccin
Statement se puede
reutilizar
while(resultSet.next()) {
System.out.println(resultSet.getString(1) + " " +
resultSet.getString(2) + " " +
resultSet.getInt(3)
+ " " +
resultSet.getInt(4));
while(resultSet.next()) {
System.out.println(resultSet.getString("nombre") + " " +
resultSet.getString("region") + " " +
resultSet.getInt
("area")
+ " " +
resultSet.getInt("poblacion"));
Cerrar la conexin
connection.close();
Abrir una conexin es caro as que
debe posponerse el cierre de la
conexin si se van a ejecutar ms
consultas a la misma base de datos
Ejemplo Completo-I
import java.sql.*;
public class TestDriver {
public static void main(String[] Args) {
try {
//Constructor
Class.forName("org.postgresql.Driver");}
Connection connection =
DriverManager.getConnection
("jdbc:postgresql:cia","roberto","pepino");
Statement statement =
connection.createStatement();
String consultaSQL = "SELECT 1+1";
Ejemplo Completo-II
ResulSet results = statement.executeQuery(consultaSQL);
//Mostrar datos
int outp;
while (results.next())
{
outp = results.getInt();
System.out.println("1+1 es: " + outp + "\n");
}
connection.close();
} catching excepcion
cath(java.lang.Exception ex){
System.out.println("Error: " + ex);
}}}
ResultSetMetaData:
ResulSetMetaData
ResulSetMetaData:
Mtodos
getColumnCount
getColumnDisplaySize
getColumnName
nombre de la columna
getColumnType
ResulSetMetaData:
Mtodos
isNullable
Statement
Statement
PreparedStatement
Transacciones
Transacciones
Transacciones: ejemplo
Connection connection =
DriverManager.getConnection(url,username,passwd);
connectio.setAutoCommit(false);
//setTransactionIsolation
//NO commit explicito
try{
statement.executeUpdate();
statement.executeUpdate();
} catch (SQLExcepcione e){
try{
connection.rollback();
} catch(SQLExcepcion sqle) {
//report problem
}
}
Transacciones: ejemplo II
try {
connection.commit();
connection.close();
} catch (SQLException sqle) {}
}
Utilidades
DatabaseUtilities y DBResults
Idea:
Mtodos:
getQueryResults
conecta la base
realiza la consulta
trae las tuplas resultado (como strings)
las coloca en un objeto DBResults
createTable. Dado:
printTable
printTableData
Ejemplo
DBResults results =
DatabaseUtilities.getQueryResults(driver,
url, username, password,query,true);
out.println(results.toHTMLTable("CYAN"));
DBUtilities/jesus/cwp/CiaTest.java
compile all/run from above
Example3 (command line)/Example4 (input)
Curiosidad: Qu es lo que se
manda de verdad?
El comado SQL puede ser transformado
de acuerdo a las peculiaridades de la base
String Nat =
connection.nativeSQL("SELECT * FROM
cia WHERE name='rrr'");
System.out.println("native: " +nat +
"\n");
Aunque normalmente no lo es para estos
casos tan sencillos
Example2_1.java