Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
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
10 de mayo de 2007
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
DBMS
PostgresSQL
DBMS
OracleMySQL
DBMS
Aplicacion Java
JDBC
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
1create database valores;2use valores;3
4create table valores (5id int unsigned auto_increment primary key ,6nombre varchar (255),7ibex_id varchar (100),8url varchar (255),9tipo enum("acciones","fondos")10);11
12create table datos (13id int unsigned auto_increment primary key ,14empresa int unsigned ,15fecha date ,16valor double17);18
19grant all on valores .* to luis identified by 'patata ';
1~/sql$ mysql -u root < crea.sql
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
1package valores;2import java.sql.Connection;3import java.sql.DriverManager;4import java.sql.SQLException;5
6public class Conexion {7protected static Connection getMysqlConnection(String url , String db ,8String user , String passwd)9throws ClassNotFoundException ,10InstantiationException ,11SQLException ,12IllegalAccessException {13Class.forName("com.mysql.jdbc.Driver"). newInstance ();14return DriverManager.getConnection("jdbc:mysql ://"+url+"/"+db+15"?user="+user+"&password="+passwd );16}17protected static Connection getMysqlConnection ()18throws ClassNotFoundException ,19InstantiationException ,20SQLException ,21IllegalAccessException {22return getMysqlConnection("localhost", "valores", "luis", "patata");23}24protected static String getFich(String fich) {25java.net.URL url = ClassLoader.getSystemResource(fich);26return url.getPath ();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
1BSCH ·BSCH ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/accind1_1.htm2Endesa ·ENDESA ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/accind1_1.htm3Repsol - YPF·REPSOL YPF ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/accind1_1.htm4Acciona ·ACCIONA ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/accind1_1.htm5Inditex ·INDITEX ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/accind1_1.htm6Teléfonica ·TELEFONICA ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/accind1_1.htm7Banco Popular·BA . POPULAR ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/accind1_1.htm8Ebro - Puleva·EBRO PULEVA ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/igbm_3_1.htm9Mittal - Steel·ARCELOR MIT. ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/igbm_2_1.htm10Indra·INDRA A ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/igbm_6_1.htm11EADS ·EADS ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/igbm_2_1.htm12Unipapel ·UNIPAPEL ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/igbm_3_1.htm13Madrid Bolsa·MADRID BOLSA ·fondos ·http :// www.bolsamadrid.es/esp/mercados/fondos/htmfondos /0085 alfa.htm14Plus Madrid ·PLUSMADRID ·fondos ·http :// www.bolsamadrid.es/esp/mercados/fondos/htmfondos /0085 alfa.htm15FonCaixa 65 ·FONCAIXA 65 BOLSA INDICE ESPA ñ A ·fondos ·http :// www.bolsamadrid.es/esp/mercados/fondos/htmfondos /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
1package valores;2import java.io.BufferedReader;3import java.io.FileReader;4import java.io.IOException;5import java.sql.Connection;6import java.sql.PreparedStatement;7import java.sql.SQLException;8import java.util.Scanner;9public class LeeValores {10private static void insertaDatos(Connection con , BufferedReader in)11throws IOException , SQLException {12.....................13}14public static void main (String [] args) throws Exception {15Connection con = null;16BufferedReader in = null;17try {18con = Conexion.getMysqlConnection ();19in = new BufferedReader(new FileReader(Conexion.getFich("sql/valores.csv")));20insertaDatos(con ,in);21} finally {22if (con!=null) con.close ();23if (in!=null) in.close ();24}25}26}
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 �chero sql/valores.csv?
1.2|-- |-- sql3| |-- borra.sql4| |-- crea.sql5| |-- datos.csv6| |-- usuarios.csv7| `-- valores.csv8|-- src9| |-- valores10| | |-- CVS11| | | |-- Entries12| | | |-- Repository13| | | `-- Root14| | |-- Conexion.java15| | |-- ConsigueDatos.java16| | |-- ConsigueDatos.java .~1.1.~17| | |-- LeeDatos.java18| | `-- LeeValores.java19|-- classes20| `-- valores21| |-- Conexion.class22| |-- ConsigueDatos.class23| |-- LeeDatos.class24| `-- LeeEmpresas.class
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.
1java.net.URL url = ClassLoader.getSystemResource(fich);
fich debe estar dentro del CLASSPATH en la ejecución.
1~/Java$ export CLASSPATH =.:./ classes2~/Java$ $JAVA_HOME/bin/java valores.LeeValores
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
1private static final String sqlIns =2"insert into valores (nombre ,ibex_id ,url ,tipo) "+3"values ( ? , ? , ? , ?)";4private final static int NOMBRE =1;5private final static int IBEX_ID =2;6private final static int URL_BOLSA =3;7private final static int TIPO =4;8
9private static void insertaDatos(Connection con , BufferedReader in)10throws IOException , SQLException {11String linea = in.readLine ();12PreparedStatement pstmt = con.prepareStatement(sqlIns );13while (linea !=null) {14Scanner scan = new Scanner(linea );15scan.useDelimiter(" · ");16String nombre = scan.next ();17String ibex_id = scan.next ();18String tipo = scan.next ();19String url = scan.next ();20System.out.println(nombre+":"+ibex_id+":"+tipo+":"+url);21pstmt.setString(NOMBRE ,nombre );22pstmt.setString(IBEX_ID ,ibex_id );23pstmt.setString(TIPO ,tipo);24pstmt.setString(URL_BOLSA ,url);25int n = pstmt.executeUpdate ();26linea=in.readLine ();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
1Fecha ·BSCH ·ENDESA ·REPSOL - YPF ·ACCIONA ·INDITEX ·Telefónica ·Banco Popular·Ebro - Puleva·Mittal Steel ·INDRA ·AEDS ·Unipapel ·Madrid Bolsa ·PlusMadrid ·Fon Caixa 65228/03/02 ·9 .6 ·17 .05 ·14 .45 · · · · · · · · · · 1 2 .35 ·17 .33 ·5 .49301/04/02 ·9 .6 ·17 .05 ·14 .45 · · · · · · · · · · 1 2 .35 ·17 .33 ·5 .494· · · · · · · · · · · · · · ·527/08/04 ·8 ·15 .25 ·16 .98 ·50 .15 ·19 ·11 .83 · · · · · · · 1 1 .81 ·17 .03 ·4 .64630/08/04 ·7 .99 ·15 .29 ·17 .03 ·50 .05 ·19 .08 ·11 .78 · · · · · · · 1 1 .89 ·17 .1 ·4 .66712/12/06 ·14 .01 ·35 .76 ·27 .71 ·137 .95 ·39 .59 ·16 .06 ·13 .7 ·18 .62 ·31 .5 ·18 .35 · · · 2 1 .08 ·25 .22 ·8 .158· · · · · · · · · · · · · · ·919/12/06 ·13 .98 ·35 .15 ·26 .96 ·138 .2 ·40 .78 ·16 .11 ·13 .7 ·19 .17 ·31 .25 ·18 .15 ·24 .20 · ·21 .51 ·25 .57 ·8 .351020/12/06 ·14 .08 ·35 .16 ·26 .92 ·139 .9 ·40 .95 ·16 .28 ·13 .68 ·19 .28 ·31 .86 ·18 .42 ·25 .45 · ·21 .4 ·25 .47 ·8 .371121/12/06 ·14 .06 ·35 .43 ·26 .6 ·140 .9 ·40 .61 ·16 .15 ·13 .65 ·19 .25 ·31 .86 ·18 .46 ·25 .79 · ·21 .2 ·25 .29 ·8 .3312· · · · · · · · · · · · · · ·1327/12/06 ·14 .16 ·35 .72 ·26 .5 ·140 ·41 .01 ·16 .2 ·13 .69 ·19 .59 ·31 .95 ·19 .06 ·26 .07 ·21 .34 ·21 .16 ·25 .25 ·8 .261428/12/06 ·14 .12 ·35 .55 ·26 .41 ·141 .05 ·40 .89 ·16 .16 ·13 .68 ·19 .12 ·32 .26 ·18 .67 ·26 .00 ·21 .40 ·21 .05 ·25 .14 ·8 .181529/12/06 ·14 .14 ·35 .83 ·26 .2 ·141 .1 ·40 .81 ·16 .12 ·13 .73 ·19 .2 ·32 ·18 .61 ·26 .00 ·21 .50 ·21 .23 ·25 .3 ·8 .181601/01/07 ·14 .14 ·35 .83 ·26 .2 ·141 .1 ·40 .81 ·16 .12 ·13 .73 ·19 .2 ·32 ·18 .61 ·26 .00 ·21 .50 ·21 .18 ·25 .24 ·8 .181702/01/07 ·14 .49 ·35 .57 ·26 .63 ·143 .05 ·40 .79 ·16 .39 ·13 .97 ·19 .46 ·32 .87 ·18 .88 ·26 .29 ·21 .85 ·21 .18 ·25 .24 ·8 .18
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
1private static void insertaDatos(Connection con , BufferedReader in)2throws IOException , SQLException , ParseException {3int [] id_valores = valores(con);4String linea = in.readLine ();5linea = in.readLine ();6String sql = "insert into datos (fecha ,valor ,precio) values ( ?, ? , ? )";7PreparedStatement pstmt = con.prepareStatement(sql);8while (linea !=null) {9Scanner scan = new Scanner(linea );10scan.useDelimiter(" · ");11String strFecha=scan.next ();12if (! strFecha.equals("")) {13DateFormat df = new SimpleDateFormat("dd/MM/yy");14Date fecha = df.parse(strFecha );15System.out.println(df.format(fecha ));16for (int i = 0; i < id_valores.length ; i++) {17String strValor = scan.next ();18if (! strValor.equals("")) {19double precio = Double.parseDouble(strValor );20pstmt.setDate(1,new java.sql.Date(fecha.getTime ()));21pstmt.setInt(2, id_valores[i]);22pstmt.setDouble (3,precio );23int n = pstmt.executeUpdate ();24}25
26}27}28linea = in.readLine ();29}30}
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
1private static String [] valores = {2"BSCH","ENDESA","REPSOL YPF",3"ACCIONA","INDITEX","TELEFONICA",4"BA.POPULAR","EBRO PULEVA","ARCELOR MIT.",5"INDRA A","EADS","UNIPAPEL","MADRID BOLSA",6"PLUSMADRID","FONCAIXA 65 BOLSA INDICE ESPA ñA"7};8private static int [] valores(Connection con) throws SQLException {9int [] ids = new int[valores.length ];10String sql = "select id from valores where ibex_id like ?";11PreparedStatement pstmt = con.prepareStatement(sql);12for (int i = 0; i < ids.length; i++) {13pstmt.setString (1,valores[i]);14ResultSet rs = pstmt.executeQuery ();15rs.next ();16ids[i]=rs.getInt (1);17}18return ids;19}
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Realizar actualizaciones
Instrucciones: INSERT, UPDATE, DELETE
1public static void pr2(Connection con) throws SQLException {2String sql = "update datos set precio=precio +1";3PreparedStatement pstmt = con.prepareStatement(sql);4int n = pstmt.executeUpdate ();5System.out.println(n+" filas actualizadas");6SQLWarning warning = pstmt.getWarnings ();7if (warning !=null) {8System.out.println("AVISOS ...");9while (warning !=null) {10System.out.println("Message: " + warning.getMessage ());11warning = warning.getNextWarning ();12}13} else {14System.out.println("No hay avisos");15}16}
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Realizar Consultas
Instrucciones Select
1select id ,nombre ,tipo from valores
ResultSet rs = pstmt.executeQuery();
rs.next();
rs id nombre tipo
rs
1 BSCH acciones
rs
2 Endesa acciones
rs
3 Repsol-YPF acciones
rs
4 Acciona acciones
rs
5 Inditex acciones
rs
6 Telefónica acciones
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Realizar Consultas
Instrucciones Select
1select id ,nombre ,tipo from valores
ResultSet rs = pstmt.executeQuery();
rs.next();
rs
id nombre tipo
rs 1 BSCH acciones
rs
2 Endesa acciones
rs
3 Repsol-YPF acciones
rs
4 Acciona acciones
rs
5 Inditex acciones
rs
6 Telefónica acciones
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Realizar Consultas
Instrucciones Select
1select id ,nombre ,tipo from valores
ResultSet rs = pstmt.executeQuery();
rs.next();
rs
id nombre tipo
rs
1 BSCH acciones
rs 2 Endesa acciones
rs
3 Repsol-YPF acciones
rs
4 Acciona acciones
rs
5 Inditex acciones
rs
6 Telefónica acciones
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Realizar Consultas
Instrucciones Select
1select id ,nombre ,tipo from valores
ResultSet rs = pstmt.executeQuery();
rs.next();
rs
id nombre tipo
rs
1 BSCH acciones
rs
2 Endesa acciones
rs 3 Repsol-YPF acciones
rs
4 Acciona acciones
rs
5 Inditex acciones
rs
6 Telefónica acciones
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Realizar Consultas
Instrucciones Select
1select id ,nombre ,tipo from valores
ResultSet rs = pstmt.executeQuery();
rs.next();
rs
id nombre tipo
rs
1 BSCH acciones
rs
2 Endesa acciones
rs
3 Repsol-YPF acciones
rs 4 Acciona acciones
rs
5 Inditex acciones
rs
6 Telefónica acciones
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Realizar Consultas
Instrucciones Select
1select id ,nombre ,tipo from valores
ResultSet rs = pstmt.executeQuery();
rs.next();
rs
id nombre tipo
rs
1 BSCH acciones
rs
2 Endesa acciones
rs
3 Repsol-YPF acciones
rs
4 Acciona acciones
rs 5 Inditex acciones
rs
6 Telefónica acciones
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Realizar Consultas
Instrucciones Select
1select id ,nombre ,tipo from valores
ResultSet rs = pstmt.executeQuery();
rs.next();
rs
id nombre tipo
rs
1 BSCH acciones
rs
2 Endesa acciones
rs
3 Repsol-YPF acciones
rs
4 Acciona acciones
rs
5 Inditex acciones
rs 6 Telefónica acciones
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Realizar Consultas
Instrucciones Select
1select id ,nombre ,tipo from valores
ResultSet rs = pstmt.executeQuery();
rs.next();
rs
id nombre tipo
rs
1 BSCH acciones
rs
2 Endesa acciones
rs
3 Repsol-YPF acciones
rs
4 Acciona acciones
rs
5 Inditex acciones
rs
6 Telefónica acciones
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Ejemplos de consultas I
1public static void pr1(Connection con) throws SQLException {2String sql = "select * from valores";3PreparedStatement pstmt = con.prepareStatement(sql);4ResultSet rs = pstmt.executeQuery ();5while (rs.next ()) {6int id = rs.getInt("id");7String nombre = rs.getString("nombre");8System.out.println(id+":"+nombre );9}10}
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Ejemplos de consultas II
1public static void pr3(Connection con) throws SQLException {2String sql = "select valores.nombre , datos.fecha , datos.precio "+3" from datos left join valores on valores.id=datos.valor "+4" where datos.fecha >='2007-03-01'"+5" order by valores.tipo , valores.nombre , datos.fecha";6PreparedStatement pstmt = con.prepareStatement(sql);7ResultSet rs = pstmt.executeQuery ();8while (rs.next ()) {9String nombre = rs.getString("valores.nombre");10Date fecha = rs.getDate("datos.fecha");11double precio = rs.getDouble("datos.precio");12DateFormat df = new SimpleDateFormat("dd 'de' MMMM 'de' yyy");13NumberFormat nf = new DecimalFormat("# ,000.00'e'");14System.out.println(df.format(fecha )+"\t"+nombre+"\t"+nf.format(precio ));15}16}
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Ejemplos de consultas III
1public static int getID(String ibex_id , Connection con) throws SQLException {2String sql = "select id from valores where ibex_id like '"+ibex_id+"'";3PreparedStatement pstmt = con.prepareStatement(sql);4ResultSet rs = pstmt.executeQuery ();5if (rs.next ()) {6return rs.getInt (1);7} else {8return -1;9}10}
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Consiguiendo datos desde www.bolsamadrid.es
Conseguir el �chero HTML.
Analizar el �chero.
Añadir datos en la base de datos.
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Conseguir el �chero HTML
Fichero de valores: valores.csv
1BSCH ·BSCH ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/accind1_1.htm2Endesa ·ENDESA ·acciones ·http :// www.bolsamadrid.es/esp/mercados/acciones/accind1_1.htm
1private static String cargaPagina(java.net.URL url)2throws IOException{3InputStream in = url.openStream ();4StringBuffer sb = new StringBuffer ();5int c = in.read ();6while (c!=-1) {7sb.append ((char)c);8c = in.read ();9}10String res = sb.toString ();11return res;12}
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Analizar el �chero HTML
Fichero de valores:
http://www.bolsamadrid.es/esp/mercados/acciones/accind1_1.htm
1.....................2....<IMG SRC="/images/arr -up9.gif" BORDER =0> BSCH</A></TD><TD>13,50</TD>.....3.....................4....<IMG SRC="/images/arr -dw9.gif" BORDER =0> ENDESA </A></TD><TD>40,29</TD>...
1private static double getValor(String ibex_id , String datos , String tipo)2throws ParseException {3String regExp=null;4if (tipo.equals("acciones")) {5regExp=ibex_id+" *</A></TD ><TD >([0-9,]+) </TD>";6} else if (tipo.equals("fondos")) {7regExp=ibex_id+" *</a></TD >.*?<TD *[^>]*>([0-9,]+) </TD>";8} else {9throw new RuntimeException("Tipo \'"+tipo+"\' desconocido");10}11Pattern p = Pattern.compile(regExp );12Matcher m = p.matcher(datos );13if (m.find ()) {14// Double.parseDouble no vale , no analiza 13,50
15NumberFormat nf = NumberFormat.getInstance ();16return nf.parse(m.group (1)). doubleValue ();17} else {18throw new RuntimeException("Acciones \'"+ibex_id+"\' no encontrada");19}20}
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Insertar los datos en la Base de datos
1private static final String sqlIns =2"insert into datos (fecha ,valor ,precio) values( ? , ? , ?)";3private static final int FECHA =1;4private static final int VALOR =2;5private static final int PRECIO =3;6
7private static void insertaDatos(java.sql.Date fecha ,Connection con)8throws SQLException , IOException , ParseException {9HashMap <String ,String > paginas = new HashMap <String ,String >();10String sql = "select * from valores";11PreparedStatement pstmtValores = con.prepareStatement(sql);12ResultSet rs = pstmtValores.executeQuery ();13PreparedStatement pstmtIns = con.prepareStatement(sqlIns );14while (rs.next ()) {15insertaDatos(pstmtIns ,16fecha ,17rs ,paginas );18}19}
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Insertar los datos en la Base de datos
1private static void insertaDatos(PreparedStatement pstmtIns ,2java.sql.Date fecha ,3ResultSet rs ,4HashMap <String ,String > paginas)5throws SQLException ,IOException , ParseException {6String url = rs.getString("url");7String datos = paginas.get(url);8if (datos ==null) {9datos = cargaPagina(paginas ,url ));10paginas.put(url ,datos );11}12String tipo = rs.getString("tipo");13String ibex_id = rs.getString("ibex_id");14double valor = getValor(ibex_id ,datos ,tipo);15int id = rs.getInt("id");16String nombre = rs.getString("nombre");17pstmtIns.setDate(FECHA ,fecha );18pstmtIns.setInt(VALOR ,id);19pstmtIns.setDouble(PRECIO ,valor );20int n = pstmtIns.executeUpdate ();21}
Luis Fernando Llana Díaz Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid
JDBC: Conexiones con bases de datos desde Java
Consiguiendo datos automáticamente
1#!/bin/sh
2# $Id: transparencias.tex ,v 1.8 2007 -05 -10 11:37:22 luis Exp $
3
4JAVA_HOME =/opt/java/jdk1.55CLASSPATH =/home/casa/ahorros2/classes6$JAVA_HOME/bin/java -cp $CLASSPATH valores.ConsigueDatos $*
1$ crontab -l2
3SHELL =/bin/bash4MAILTO=luis5# Directorios donde buscar programas6PATH=/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/home/luis/bin7
845 23 * * 1,2,3,4,5 /home/casa/ahorros2/scripts/consigueDatos.sh > /dev/null 2>&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