Acceso a datos básico

package com.trifulcas.datos;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class AccesoSakila {

	public static void main(String[] args) {

		try {
			// Lo primero de todo crear una conexión CTRL+MAY+O -> importación automática de los paquetes que falten

			// Esta línea nos 'registra' el conector mysql dentro de Java
			Class.forName("com.mysql.cj.jdbc.Driver");
			// Aquí nos creamos la conexión con una cadena de conexión
			// Lo primero es el tipo de conector: jdbc:mysql
			// Después la url del servidor SGBD //localhost:3306/
			// Después opcionalmente pero está bien ponerlo la base de datos /sakila
			// Por último usuario y contraseña root ''
			Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "root", "");
			System.out.println("Conexión correcta");
			
			// Con esta conexión yo puedo lanzar comandos a la base de datos.
			// Los comandos son SQL y pueden ser de dos tipos:
			// Lectura de datos (SELECT)
			// Modificación de datos (INSERT,UPDATE,DELETE)
			
			// Crear una sentencia Statement
			// Puedo lanzar dos tipos de ejecución: 
			// executeQuery: consulta, me devolverá datos
			// executeUpdate: modificación, no me devuelve datos
			Statement stmt = con.createStatement();
			
			// Crearme una sentencia sql para obtener unos datos
			String sql="select * from actor where first_name like 'b%'";
			
			// Guardo los resultados en un ResultSet: Una clase que nos permite ir leyendo los
			// Registros que nos ha devuelto nuestra consulta
			ResultSet rs = stmt.executeQuery(sql);
		
			// Cada vez que yo quiero un registro llamo a next()
			// Cuando no haya registros devuelve false y sale del while
			while (rs.next()) {
				// Una vez he 'cargado' un registro puedo acceder a los campos de dos maneras
				// Por el índice de la columna (empezando por el 1)
				System.out.println(rs.getInt(1) + "  " + rs.getString(2) + "  " + rs.getString(3));
				int id=rs.getInt(1);
				String first_name=rs.getString(2);
				String last_name=rs.getString(3);
				System.out.println(id+"-"+first_name+" - "+last_name);

				// Por el nombre de la columna
				// En los dos casos como Java es tipado tengo que usar el tipo correspondiente
				// getInt, getString,...
				id=rs.getInt("actor_id");
				first_name=rs.getString("first_name");
				last_name=rs.getString("last_name");
				System.out.println(id+" | "+first_name+" | "+last_name);
			}
			
			// Para modificar datos es más sencillo puesto que no tenemos resultados
			// Plantamos nuestra sentencia sql
			sql="insert into actor (first_name,last_name) values ('aa','bb')";
			
			// La ejecutamos con executeUpdate que no devuelve un ResultSet
			// Devuelve el número de filas afectadas
			int res=stmt.executeUpdate(sql);
			System.out.println(res);
			
			// La sentencia sql pueder un update o un delete
			sql="update actor set last_name='bbb' where first_name ='aa'";
			res=stmt.executeUpdate(sql);
			System.out.println(res);
			
		} catch (Exception ex) {
			System.out.println(ex);
		}
	}

}

Publicado por

Avatar del usuario

Juan Pablo Fuentes

Formador de programación y bases de datos