Publicado el 1 de Septiembre del 2018
862 visualizaciones desde el 1 de Septiembre del 2018
655,9 KB
24 paginas
Creado hace 11a (09/10/2012)
Conectividad de Java con bases de datos
-DYD'DWDEDVH&RQQHFWLYLW\
JDBC
JDBC
1
• ¿Qué es JDBC?
• Cuatro tipos de drivers JDBC
• Uso de JDBC
• Uso de JDBC
&RQW«
2
¿Qué es JDBC?
• JDBC es una interfaz que permite a un
programa java ejecutar instrucciones SQL
dentro de bases de datos relacionales.
– Las bases de datos deben seguir el estandar
ANSI SQL-92
JDBC en acción
SURJUDPD
-DYD
-'%&
-'%&
GULYHU
SDUD2UDFOH
GULYHU
SDUDP\VTO
MGEFRGEF
SXHQWH
GULYHU
RGEF
DB
DB
DB
3
4
Cuatro tipos de drivers JDBC
2'%&
2'%&
'ULYHU
&/,OLE
&/,OLE
0LGGOHZDUH
6HUYHU
-'%&
-'%&
7\SH,
³%ULGJH´
7\SH,,
³1DWLYH´
7\SH,,,
³0LGGOHZDUH´
7\SH,9
³3XUH´
Cuatro tipos de drivers JDBC (Cont…)
I. Puente JDBC-ODBC
– traduce Java al API de ODBC
&OLHQW
&OLHQW
6HUYHU
6HUYHU
BD
&OLHQW
-DYD
-'%& 2'%&
ODBC 3URWRFRO
ODBC
6HUYHU
%'
&RQWLQXHG
6
Cuatro tipos de drivers JDBC (Cont…)
II. Native API
- traduce Java al API de la base de datos
&OLHQW
&OLHQW
6HUYHU
6HUYHU
BD
&OLHQW
-DYD
-'%&
1DWLYH
$3,
Native 3URWRFRO
Native
6HUYHU
%'
7
Cuatro tipos de drivers JDBC (Cont…)
III. Middleware
- Invoca un servidor intermedio generalmente ubicado en el
mismo host de la base de datos. Utiliza un protocolo
estándar independiente de la base de datos.
&OLHQW
6HUYHU
BD
&OLHQW
-DYD
-'%&
Standard 3URWRFRO
middleware
6HUYHU
Native
6HUYHU
%'
8
Cuatro tipos de drivers JDBC (Cont…)
IV. Net Protocol
Genera el protocolo de comunicaciones de la base
de datos
&OLHQW
&OLHQW
6HUYHU
6HUYHU
BD
&OLHQW
-DYD
-'%&
Native 3URWRFRO
Native
6HUYHU
%'
9
Drivers JDBC
• Una lista de diversos drivers pueden ser encontrados
(freeware, shareware, and commercial) en:
http://developers.sun.com/product/jdbc/drivers
10
5'%06
0\64/
2UDFOH
'%
$FFHVV
Algunos Drivers JDBC
-'%&'ULYHU1DPH
'ULYHU1DPH
com.mysql.jdbc.Driver
'DWDEDVH85/IRUPDW
jdbc:mysql://hostname/databaseName
'ULYHU1DPH
oracle.jdbc.driver.OracleDriver
'DWDEDVH85/IRUPDW
jdbc:oracle:thin@hostname:portnumber:databaseName
'ULYHU1DPH
COM.ibm.db2.jdbc.net.DB2Driver
'DWDEDVH85/IRUPDW
jdbc:db2:hostname:portnumber/databaseName
'ULYHU1DPH
sun.jdbc.odbc.JdbcOdbcDriver
'DWDEDVH85/IRUPDW
jdbc:odbc:databaseName
Instalación del driver
El driver se presenta como un archivo jar, por ejemplo
para MySQL el driver se llama:
mysql-connector-java-5.1.9-bin.jar
El driver se instala en el directorio donde se tenga
instalado el JDK, dentro de la carpeta:
…/jre/lib/ext
11
12
Cargando el driver en Netbeans
Si ya instalaron el driver
en el JDK, dentro de la
carpeta:
…/jre/lib/ext
…/jre/lib/ext
Netbeans puede
accesarlo ya que cargará
todas las librerías del
JDK
Usando el driver incluido en Netbeans
Con el botón derecho en el folder “Libraries” seleccionar “Add Library” y después MySQL JDBC Driver
Proyecto con la
librería para
MySQL incluida
13
14
Secuencia JDBC
• Todos los programas JDBC hacen lo siguiente:
– 1) Cargan el driver JDBC
– 2) Especifican el nombre y ubicación de la base de
datos utilizada
datos utilizada
– 3) Se conectan a la base de datos creando un objeto
Connection
&RQWLQXHG
15
Secuencia JDBC (Cont…)
– 4) Crean un Statement object y ejecutan queries
SQL
– 5) Los resultados de un query se guardan en un
objeto de tipo ResultSet, allí se pueden consultar
objeto de tipo ResultSet, allí se pueden consultar
– 6) Cerrar (close) los objetos ResultSet, Statement y
Connection
16
Cargar el driver JDBC
(Antes de JDBC 4.0)
import java.sql.*;
Class.forName("com.mysql.jdbc.Driver")
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
El driver para ODBC viene incluido en la instalación básica de java.
El driver para MySQL se puede obtener bajando el archivo
mysql-connector-java-5.1.9-bin.jar
de la página: www.mysql.com/products/connector/j/
e instalandolo en la carpeta jre/lib/ext de la instalación de java.
17
Conectar
String url = "jdbc:odbc:Books";
String username = "anonymous";
String password = "guest";
connection = DriverManager.getConnection(url, username, password );
ODBC
String url = "jdbc:mysql://localhost:3306/mysql";
Connection con = DriverManager.getConnection(url,"root", "");
Connection con = DriverManager.getConnection(url,"root", "");
MySQL
MySQL
Cuando se invoca el método getConnection, el DriverManager
intenta localizar un driver apropiado entre los que se hayan
cargado previamente y los que se puedan cargar usando el mismo
classloader que la aplicación actual.
18
Algunos métodos de java.sql.Connection
0«WRGR
0«WRGR
0«WRGR
0«WRGR
2EMHWLYR
2EMHWLYR
2EMHWLYR
2EMHWLYR
6WDWHPHQWFUHDWH6WDWHPHQW
6WDWHPHQW
FUHDWH6WDWHPHQW
FUHDWH6WDWHPHQW
6WDWHPHQW
6WDWHPHQW
FUHDWH6WDWHPHQW
'DWDEDVH0HWD'DWD JHW0HWD'DWD
ERROHDQLV&ORVHG
YRLGFRPPLW
YRLGUROOEDFN
5HJUHVD XQREMHWR GHOWLSR VWDWHPHQWTXH VHU£
XWLOL]DGR SDUD HQYLDU 64/DODEDVHGHGDWRV
2EWLHQH XQREMHWR TXH FRQWLHQH LQIRUPDFLµQ VREUH
ODFRQILJXUDFLµQ GHODEDVHGHGDWRV
5HJUHVD YHUGDGHUR WUXH VL ODEDVHGHGDWRV HVW£
FHUUDGD
FHUUDGD
+DFH SHUPDQHQWHV WRGRV ORVFDPELRV KHFKRV
GHVSXHV GHO¼OWLPR FRPPLWUROOEDFN
'HVKDFH WRGRV ORVFDPELRV KHFKRV GHVSX«V GHO
¼OWLPR FRPPLWUROOEDFN
Algunos métodos de java.sql.Connection(Cont…)
0«WRGR
0«WRGR
0«WRGR
0«WRGR
2EMHWLYR
2EMHWLYR
2EMHWLYR
2EMHWLYR
YRLGVHW$XWR&RPPLWERROHDQ\Q
5HVWDXUDTXLWD HOPRGR DXWRFRPPLWHVWH PRGR
HIHFW¼D XQFRPPLWDXWRP£WLFR GHVSX«V GHFDGD
FRPDQGR 64/(/YDORUSRU GHIDXOWGH
$XWR&RPPLW HV RQ
YRLGFORVH
&LHUUD ODFRQH[LµQ
19
20
Statement
• Un objeto de tipo Statement se obtiene invocando el método
FUHDWH6WDWHPHQW GH XQ REMHWR &RQQHFWLRQ.
• Permite enviar comandos SQL a la base de datos. Ejemplos:
Statement myStmt = connection.createStatement();
ResultSet myResult;
myResult=myStmt.executeQuery(“SELECT * FROM bikes;”);
Statement myStmt = connection.createStatement();
myStmt.executeUpdate(“UPDATE Authors SET firstName=‘Joe’
WHERE firstName=‘Tem’ ”);
Prepared Statement
Los Prepared Statements se utilizan para consultas que se
ejecutan muchas veces
El DBMS las compila una sola vez
En lugar de datos, se utiliza el signo de interrogación ‘?’ como
marcador. Los datos se agregan despues de la compilación.
Los marcadores ‘?’ deben ser sustituidos por datos concretos
antes de ejecutar losPrepared Statements.
21
22
Prepared Statement
String queryStr =
"SELECT * FROM Items " +
"WHERE Name = ? and Cost < ?";
PreparedStatement pstmt = con.prepareStatement(queryStr);
pstmt.setString(1, "shirt");
pstmt.setInt(2, 1000);
ResultSet rs = pstmt.executeQuery();
23
ResultSet
• Un objeto ResultSet es similar a un arreglo de dos dimensiones. Cada
llamada a next() apunta al siguiente registro en el result set.
• Se debe llamar al método next() antes de poder ver el primer registro, y el
método regresará el valor de false cuando ya no hay mas registros. Esta
propiedad se utiliza generalmente para controlar un while loop.
propiedad se utiliza generalmente para controlar un while loop.
• El ResultSet tiene métodos de acceso en lectura getInt(), getLong(),
getString() etc., para todos los tipos de datos java que equivalen a los tipos
SQL, se requiere especificar el nombre ó número de órden (empezando en
1, 2, 3, etc.) de la columna que se va a leer.
24
SQL
Java Type
Method
BIT
TINYINT
SMALLINT
INTEGER
BIGINT
REAL
FLOAT
DOUBLE
DECIMAL
NUMERIC
NUMERIC
CHAR
VARCHAR
boolean
getBoolean()
byte
short
int
long
float
double
double
getByte()
getShort()
getInt()
getLong()
getFloat()
getDouble()
getDouble()
java.math.BigDecimal
getBigDecimal()
java.sql.Numeric
java.sql.Numeric
getNumeric()
getNumeric()
String
String
getString()
getString()
LONGVARCHAR
InputStream
getAsciiStream()
getUnicodeStream()
BINARY
byte[]
getBytes()
LONGVARBINARY
InputStream
getBinaryStream()
DATE
TIME
java.sql.Date
java.sql.Time
getDate()
getTime()
TIMESTAMP
java.sql.Timestamp
getTimestamp()
ResultSetMetadata
Es un objeto que puede ser utilizado para obtener información
sobre los tipos de datos y propiedades de las columnas de un
objeto ResultSet.
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
String name1 = rsmd.getColumnName(1);
25
26
Executing SQL Commands
Statement MyStmt = connection.createStatement();
int x = MyStmt.executeUpdate ("INSERT INTO Sells “ +
“VALUES ('Bar Of Foo', 'BudLite', 2.00)" );
REGRESA: el número de registros afectados si se hizo un INSERT,
REGRESA: el número de registros afectados si se hizo un INSERT,
UPDATE or DELETE, regresa 0 en caso de comandos SQL que no
regresan nada
ResultSet rs = MyStmt.executeQuery ("SELECT * FROM Sells");
27
Ejemplos JDBC
Statement MyStmt = con.createStatement();
MyStm.executeUpdate("CREATE TABLE Sells " + "(bar VARCHAR(40),
beer VARCHAR(40), price REAL)" );
Strings SQL usan
comillas simples ''
MyStm.executeUpdate("INSERT INTO Sells " +
"VALUES ('Bar Of Foo', 'BudLite', 2.00)" );
String sqlString = "CREATE TABLE Bars " +
"(name VARCHAR(40), address VARCHAR(80), license INT)" ;
MyStm.executeUpdate(sqlString);
Ponga especial atención al espacio en blanco que sigue después de
"INSERT INTO Sells " evita que este string se pegue a "VALUES".
28
Ejemplos JDBC
Statement stmt = con.createStatement();
String bar, beer ;
float price ;
ResultSet rs = stmt.executeQuery("SELECT * FROM Sells");
ResultSet rs = stmt.executeQuery("SELECT * FROM Sells");
while ( rs.next() ) {
bar = rs.getString("bar");
beer = rs.getString("beer");
price = rs.getFloat("price");
Mueve el cursor hacia el
próximo registro. El cursor
está posicionado inicialmente
antes del primer registro
System.out.println(bar + " sells " + beer + " for " + price + " Dollars.");
}
Registr
Comentarios de: JDBC Conectividad de Java con bases de datos (0)
No hay comentarios