Diferencia entre revisiones de «Prog Acceso a base de datos relacionales»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 28: Línea 28:
  
 
=Trabajando contra una base de datos Mysql=
 
=Trabajando contra una base de datos Mysql=
 +
 +
* Lo primero que tenemos que hacer es realizar una conexión a la base de datos.
 +
: Entre los datos que vamos a necesitar estarán:
 +
:* Usuario para conectarse a la base de datos con permisos para realizar las operaciones que necesitemos.
 +
:* Password del usuario.
 +
:* Nombre de la base de datos a la que nos vamos a conectar.
 +
:* Nombre del host donde está instalado el servidor Mysql.
 +
:* La cadena de conexión que representa una conexión a un servidor Mysql en JDBC.
 +
 +
 +
* Veamos un ejemplo de código:
 +
::<syntaxhighlight lang="java" line enclose="div" highlight="11" >
 +
        try {
 +
            String servidor = "localhost";
 +
            String basedatos = "ejemplo";
 +
            String user = "root";
 +
            String password = "root";
 +
           
 +
            String husoHorario = "useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
 +
 +
            String conexion = String.format("jdbc:mysql://%s/%s?%s",servidor,basedatos,husoHorario);
 +
 +
            Connection con = DriverManager.getConnection(conexion,user,password);
 +
 +
 +
        }  catch (SQLException ex) {
 +
            Logger.getLogger(ConsultaSimple.class.getName()).log(Level.SEVERE, null, ex);
 +
        }
 +
 +
</syntaxhighlight>
 +
 +
 +
  
 
<br />
 
<br />
 
==Consultas==
 
==Consultas==
 +
 +
* Partimos siempre que tenemos definido previamente un objeto de la clase Connection conectado a la base de datos.
 +
 +
 +
 +
* Veamos un ejemplo:
 +
 +
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 +
            Statement consulta = con.createStatement();
 +
            ResultSet resultados = consulta.executeQuery("SELECT nombre,f_nacimiento FROM alumnos");
 +
            while(resultados.next()) {
 +
                Date fechaBD = resultados.getDate("f_nacimiento");
 +
                String fechaSpain = new SimpleDateFormat("dd-MM-yyyy").format(fechaBD);
 +
                System.out.printf("Nombre:%s----F_nac:%s%n",resultados.getString("nombre"),fechaSpain);
 +
            }
 +
 +
</syntaxhighlight>
  
 
<br />
 
<br />
 
==Inserción==
 
==Inserción==
 +
 +
* Partimos siempre que tenemos definido previamente un objeto de la clase Connection conectado a la base de datos.
  
  
 
<br />
 
<br />
 
==Actualización==
 
==Actualización==
 +
 +
* Partimos siempre que tenemos definido previamente un objeto de la clase Connection conectado a la base de datos.
  
  
 
<br />
 
<br />
 
==Borrado==
 
==Borrado==
 +
 +
* Partimos siempre que tenemos definido previamente un objeto de la clase Connection conectado a la base de datos.
 +
  
  

Revisión del 15:12 24 abr 2018

Introdución


Descargando las librerías para conectar a Mysql

Nota: Estos pasos están probados en un Linux Mint 18 (basado en Ubuntu 16.04) de 64bits.


  • Si descargamos el paquete deb, la librerías necesarias se instalarán el el directorio /usr/share/java. El fichero (en este caso) es mysql-connector-java-8.0.11.jar.
Prog db rel 1.jpg


  • Si queremos desarrollar una aplicación desde NetBeans, debemos de añadir el jar a las librerías del proyecto como vimos en este punto de la wiki.
  • Si queremos ejecutar desde consola la aplicación ya compilada (el class) tendremos que modificar la variable de entorno classpath para añadir el jar, como está indicado en este enlace.


  • La librería descargada, obliga a que el servidor Mysql tenga establecido el huso horario. Podríamos indicarlo en la cadena de conexión desde el cliente java con la siguiente línea:
useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
O bien ejecutar la orden SQL: SET GLOBAL time_zone = '+1:00'



Trabajando contra una base de datos Mysql

  • Lo primero que tenemos que hacer es realizar una conexión a la base de datos.
Entre los datos que vamos a necesitar estarán:
  • Usuario para conectarse a la base de datos con permisos para realizar las operaciones que necesitemos.
  • Password del usuario.
  • Nombre de la base de datos a la que nos vamos a conectar.
  • Nombre del host donde está instalado el servidor Mysql.
  • La cadena de conexión que representa una conexión a un servidor Mysql en JDBC.


  • Veamos un ejemplo de código:
 1         try {
 2             String servidor = "localhost";
 3             String basedatos = "ejemplo";
 4             String user = "root";
 5             String password = "root";
 6             
 7             String husoHorario = "useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
 8 
 9             String conexion = String.format("jdbc:mysql://%s/%s?%s",servidor,basedatos,husoHorario);
10 
11             Connection con = DriverManager.getConnection(conexion,user,password);
12 
13 
14         }  catch (SQLException ex) {
15             Logger.getLogger(ConsultaSimple.class.getName()).log(Level.SEVERE, null, ex);
16         }




Consultas

  • Partimos siempre que tenemos definido previamente un objeto de la clase Connection conectado a la base de datos.


  • Veamos un ejemplo:
1             Statement consulta = con.createStatement();
2             ResultSet resultados = consulta.executeQuery("SELECT nombre,f_nacimiento FROM alumnos");
3             while(resultados.next()) {
4                 Date fechaBD = resultados.getDate("f_nacimiento");
5                 String fechaSpain = new SimpleDateFormat("dd-MM-yyyy").format(fechaBD);
6                 System.out.printf("Nombre:%s----F_nac:%s%n",resultados.getString("nombre"),fechaSpain);
7             }


Inserción

  • Partimos siempre que tenemos definido previamente un objeto de la clase Connection conectado a la base de datos.



Actualización

  • Partimos siempre que tenemos definido previamente un objeto de la clase Connection conectado a la base de datos.



Borrado

  • Partimos siempre que tenemos definido previamente un objeto de la clase Connection conectado a la base de datos.




-- Ángel D. Fernández González -- (2017).