Publicado el 25 de Abril del 2017
828 visualizaciones desde el 25 de Abril del 2017
287,6 KB
32 paginas
Creado hace 17a (21/04/2008)
JDBC: Conexiones con bases de datos desde Java
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y Computación
Universidad Complutense de Madrid
21 de abril de 2008
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
JDBC
Conexión con una fuentes de datos.
Realizar peticiones y actualizaciones.
Manejar los resultados de las consultas
Aplicación Java
JDBC
DBMS
Oracle
DBMS
MySQL
DBMS
PostgresSQL
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Drivers JDBC
Es necesario un driver dependiente del proveedor de la Base de
datos.
MySQL MySQL java connector
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Creando la base de datos
Fichero crea.sql
create d a t a b a s e valores ;
use valores ;
create table valores (
id int u n s i g n e d a u t o _ i n c r e m e n t primary key ,
nombre varchar (255) ,
ibex_id varchar (100) ,
url varchar (255) ,
tipo enum ( " a c c i o n e s " ," fondos " )
);
create table datos (
id int u n s i g n e d a u t o _ i n c r e m e n t primary key ,
valor int unsigned ,
fecha date ,
precio double ,
index ( fecha ) ,
unique index ( fecha , valor )
);
grant all on valores .* to luis i d e n t i f i e d by ’ diez799 ’;
~/ sql$ mysql -u root < crea . sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Interfaz java.sql.Connection
Establece conexión con la base de datos. No tiene constructor.
Es un interfaz (está implementado en el driver).
Constuye instrucciones SQL precompiladas (método
prepareStatement).
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Realizando conexión con la base de datos
package valores ;
import java . sql . C o n n e c t i o n ;
import java . sql . D r i v e r M a n a g e r ;
import java . sql . S Q L E x c e p t i o n ;
public class C o n e x i o n {
p r o t e c t e d static C o n n e c t i o n g e t M y s q l C o n n e c t i o n ( String url , String db ,
String user , String passwd )
throws C l a s s N o t F o u n d E x c e p t i o n ,
I n s t a n t i a t i o n E x c e p t i o n ,
SQLException ,
I l l e g a l A c c e s s E x c e p t i o n {
Class . forName ( " com . mysql . jdbc . Driver " ). n e w I n s t a n c e ();
return D r i v e r M a n a g e r . g e t C o n n e c t i o n ( " jdbc : mysql :// " + url + " / " + db +
" ? user = " + user + " & p a s s w o r d = " + passwd );
}
p r o t e c t e d static C o n n e c t i o n g e t M y s q l C o n n e c t i o n ()
throws C l a s s N o t F o u n d E x c e p t i o n ,
I n s t a n t i a t i o n E x c e p t i o n ,
SQLException ,
I l l e g a l A c c e s s E x c e p t i o n {
return g e t M y s q l C o n n e c t i o n ( " l o c a l h o s t " , " valores " , " luis " , " patata " );
}
p r o t e c t e d static String getFich ( String fich ) {
java . net . URL url = C l a s s L o a d e r . g e t S y s t e m R e s o u r c e ( fich );
return url . getPath ();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Ficheros de datos
Fichero de valores: valores.csv
B S C H· B S C H· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / a c c i n d 1 _ 1 . htm
E n d e s a· E N D E S A· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / a c c i n d 1 _ 1 . htm
Repsol - Y P F· R E P S O L Y P F· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / a c c i n d 1 _ 1 . htm
A c c i o n a· A C C I O N A· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / a c c i n d 1 _ 1 . htm
I n d i t e x· I N D I T E X· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / a c c i n d 1 _ 1 . htm
T e l é f o n i c a· T E L E F O N I C A· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / a c c i n d 1 _ 1 . htm
Banco P o p u l a r· B A . P O P U L A R· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / a c c i n d 1 _ 1 . htm
Ebro - P u l e v a· E B R O P U L E V A· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / i g b m _ 3 _ 1 . htm
Mittal - S t e e l· A R C E L O R MIT .· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / i g b m _ 2 _ 1 . htm
I n d r a· I N D R A A· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / i g b m _ 6 _ 1 . htm
E A D S· E A D S· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / i g b m _ 2 _ 1 . htm
U n i p a p e l· U N I P A P E L· a c c i o n e s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / a c c i o n e s / i g b m _ 3 _ 1 . htm
Madrid B o l s a· M A D R I D B O L S A· f o n d o s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / fondos / h t m f o n d o s /0085 alfa . htm
Plus M a d r i d· P L U S M A D R I D· f o n d o s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / fondos / h t m f o n d o s /0085 alfa . htm
F o n C a i x a 65 · F O N C A I X A 65 BOLSA INDICE ESPA ñ A· f o n d o s· h t t p :// www . b o l s a m a d r i d . es / esp / m e r c a d o s / fondos / h t m f o n d o s /0015 alfa100 . htm
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Cargar datos
package valores ;
import java . io . B u f f e r e d R e a d e r ;
import java . io . F i l e R e a d e r ;
import java . io . I O E x c e p t i o n ;
import java . sql . C o n n e c t i o n ;
import java . sql . P r e p a r e d S t a t e m e n t ;
import java . sql . S Q L E x c e p t i o n ;
import java . util . Scanner ;
public class L e e V a l o r e s {
private static void i n s e r t a D a t o s ( C o n n e c t i o n con , B u f f e r e d R e a d e r in )
throws IOException , S Q L E x c e p t i o n {
. . . . . . . . . . . . . . . . . . . . .
}
public static void main ( String [] args ) throws E x c e p t i o n {
C o n n e c t i o n con = null ;
B u f f e r e d R e a d e r in = null ;
try {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
con = C o n e x i o n . g e t M y s q l C o n n e c t i o n ();
in = new B u f f e r e d R e a d e r ( new F i l e R e a d e r ( C o n e x i o n . getFich ( " sql / valores . csv " )));
i n s e r t a D a t o s ( con , in );
} finally {
if ( con != null ) con . close ();
if ( in != null ) in . close ();
}
}
}
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
¿Dónde está el fichero sql/valores.csv?
| - - borra . sql
| - - crea . sql
| - - datos . csv
| - - u s u a r i o s . csv
‘-- valores . csv
| - - Entries
| - - R e p o s i t o r y
‘-- Root
| - - valores
| - - CVS
|
|
|
|
|
|
|
| - - C o n e x i o n . java
|
|
| - - C o n s i g u e D a t o s . java
| - - C o n s i g u e D a t o s . java .~1.1.~
|
| - - L e e D a t o s . java
|
|
‘-- L e e V a l o r e s . java
.
| - - | - - sql
|
|
|
|
|
| - - src
|
|
|
|
|
|
|
|
|
|
| - - classes
|
|
|
|
|
‘-- valores
| - - C o n e x i o n . class
| - - C o n s i g u e D a t o s . class
| - - L e e D a t o s . class
‘-- L e e E m p r e s a s . class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Accediendo sql/valores.csv
Los objetos de clase ClassLoader permitend acceder a los
recursos Java.
java . net . URL url = C l a s s L o a d e r . g e t S y s t e m R e s o u r c e ( fich );
fich debe estar dentro del CLASSPATH en la ejecución.
~/ Java$ export C L A S S P A T H =.:./ classes
~/ Java$ $ J A V A _ H O M E / bin / java valores . L e e V a l o r e s
1
1
2
Luis Fernando Llana Díaz
Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Cargar datos
private static final String sqlIns =
" insert into valores ( nombre , ibex_id , url , tipo ) " +
" values ( ? , ?
, ? , ?) " ;
private final static int NOMBRE =1;
private final static int IBEX_ID =2;
private final static int U R L _ B O L S A =3;
private final static int TIPO =4;
private static void i n s e r t a D a t o s ( C o n n e c t i o n con , B u f f e r e d R e a d e r in )
throws IOException , S Q L E x c e p t i o n {
String linea = in . r e a d L i n e ();
P r e p a r e d S t a t e m e n t pstmt = con . p r e p a r e S t a t e m e n t ( sqlIns );
while ( linea != null ) {
= scan . next ();
Scanner scan = new Scanner ( linea );
scan . u s e D e l i m i t e r ( " · " );
String nombre = scan . next ();
String ibex_id
String tipo = scan . next ();
String url = scan . next ();
System . out . println ( nombre + " : " + ibex_id + " : " + tipo
Comentarios de: JDBC: Conexiones con bases de datos desde Java (0)
No hay comentarios