Diferencia entre revisiones de «Prog Acceso a base de datos relacionales»
Ir a la navegación
Ir a la búsqueda
| Línea 16: | Línea 16: | ||
* Si queremos desarrollar una aplicación desde NetBeans, debemos de añadir el jar a las librerías del proyecto como vimos [http://wiki.cifprodolfoucha.es/index.php?title=Prog._Ampliaci%C3%B3n_POO#Librer.C3.ADas en este punto de la wiki]. | * Si queremos desarrollar una aplicación desde NetBeans, debemos de añadir el jar a las librerías del proyecto como vimos [http://wiki.cifprodolfoucha.es/index.php?title=Prog._Ampliaci%C3%B3n_POO#Librer.C3.ADas 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 [https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-installing-classpath.html está indicado en este enlace]. | + | * Si queremos ejecutar desde consola la aplicación ya compilada (el class) o compilarla desde otro editor, tendremos que modificar la variable de entorno classpath para añadir el jar, como [https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-installing-classpath.html está indicado en este enlace]. |
Revisión del 15:33 24 abr 2018
Sumario
Introdución
Descargando las librerías para conectar a Mysql
- Debemos ir a este enlace.
- Nota: Estos pasos están probados en un Linux Mint 18 (basado en Ubuntu 16.04) de 64bits.
- Si descargamos el paquete deb, las 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.
- 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) o compilarla desde otro editor, 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 }
- En versiones anteriores del conector JDBC, era necesario cargar el controlador que representaba la conexión al gestor Mysql con las siguientes instrucciones:
1 try { 2 Class.forName("com.mysql.jdbc.Driver"); 3 } catch (ClassNotFoundException e) { 4 5 }
- Ahora ya no es necesario, a parte de que la clase que carga el driver ya no es la anterior, es com.mysql.cj.jdbc.Driver
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 }
- Podemos llamar a procedimientos almacenados poniendo como orden a ejecutar CALL y el nombre del procedimiento, de la siguiente forma:
1 ResultSet resultados = consulta.executeQuery("CALL alumno_listar()");
- Siendo alumno_listar() un procedimiento con el siguiente código:
1 DELIMITER $$ 2 CREATE DEFINER=`root`@`localhost` PROCEDURE `alumno_listar`() 3 NO SQL 4 SELECT nombre,f_nacimiento 5 FROM alumnos 6 ORDER BY nombre$$ 7 DELIMITER ;
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).