Conceptos Esenciales de Programación Java: JDBC, POO y Control de Errores
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 9,81 KB
JDBC: Conexión a Bases de Datos con Java
Conexión de Java con MySQL desde Cero
Pasos Clave para la Conexión (Mnemotecnia: "DJEC"):
Descargar el archivo
.jar
del conector de MySQL (MySQL Connector/J).Juntar el archivo
.jar
al proyecto en el IDE (botón derecho → Build Path → Add External Archives).Escribir el código de conexión.
Conectar con
DriverManager.getConnection(...)
.
Ejemplo básico:
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/miBD", "usuario", "contraseña");
La Clase ResultSet en JDBC
Representa el resultado de una consulta SQL (SELECT
).
Puedes recorrer sus filas con .next()
y acceder a columnas con .getString("columna")
, .getInt("columna")
, etc.
while (rs.next()) {
System.out.println(rs.getString("nombre"));
}
Uso de ResultSet en Sentencias SQL
📌 Solo se usa con sentencias SELECT
, porque devuelve resultados (filas y columnas).
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/miBD", "usuario", "contraseña");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT nombre FROM jugadores")) {
while (rs.next()) {
System.out.println(rs.getString("nombre"));
}
} catch (SQLException e) {
e.printStackTrace();
}
Manejo de Recursos con try-with-resources
Es una versión del try
que cierra automáticamente recursos como Connection
, ResultSet
, etc.
A diferencia de try-catch-finally
, no hace falta escribir finally { recurso.close(); }
.
try (Connection conn = ...; ResultSet rs = ...) {
// uso normal
} catch (SQLException e) {
e.printStackTrace();
}
Ejemplo Completo: Conexión, ResultSet y try-with-resources
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bd", "user", "pass");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM jugadores")) {
while (rs.next()) {
System.out.println(rs.getString("nombre"));
}
} catch (SQLException e) {
e.printStackTrace();
}
Excepciones Personalizadas en Java
Una excepción personalizada permite crear errores específicos para tu aplicación.
class MiExcepcion extends Exception {
public MiExcepcion(String mensaje) {
super(mensaje);
}
}
public class PruebaExcepcion {
public static void main(String[] args) {
try {
lanzarExcepcion();
} catch (MiExcepcion e) {
System.out.println("Error personalizado: " + e.getMessage());
}
}
public static void lanzarExcepcion() throws MiExcepcion {
throw new MiExcepcion("Algo salió mal en el partido");
}
}
Conceptos de Programación Orientada a Objetos (POO)
Sobrecarga de Métodos (Polimorfismo en Tiempo de Compilación)
Consiste en tener métodos con el mismo nombre pero diferente firma (parámetros distintos).
class Calculadora {
int sumar(int a, int b) {
return a + b;
}
double sumar(double a, double b) {
return a + b;
}
}
Uso de super()
y super
en Herencia
super()
llama al constructor de la clase padre.
super.variable
o super.metodo()
llama a miembros heredados.
class Persona {
String nombre;
Persona(String nombre) {
this.nombre = nombre;
}
}
class Jugador extends Persona {
Jugador(String nombre) {
super(nombre); // llama al constructor de Persona
}
void mostrarNombre() {
System.out.println("Jugador: " + super.nombre);
}
}
Polimorfismo y su Implementación en Java
El polimorfismo es la capacidad que tiene un objeto de comportarse de diferentes formas según el contexto, especialmente cuando se usa una clase padre como tipo de referencia.
📌 Se basa en la herencia y en la sobrescritura de métodos (@Override
).
class Animal {
void hacerSonido() {
System.out.println("Sonido genérico");
}
}
class Perro extends Animal {
@Override
void hacerSonido() {
System.out.println("Guau");
}
}
Estructuras Repetitivas (Bucles) en Java
Bucle for
Se utiliza cuando se conoce el número exacto de iteraciones.
for (int i = 0; i < 5; i++) {
System.out.println("Valor de i: " + i);
}
Bucle while
El bucle while
se usa cuando no sabes exactamente cuántas veces repetir, pero tienes una condición lógica.
int i = 0;
while (i < 5) {
System.out.println("i vale: " + i);
i++;
}
Bucle do-while
Igual que while
, pero garantiza al menos una ejecución.
int i = 0;
do {
System.out.println("Ejecutado al menos una vez. i: " + i);
i++;
} while (i < 5);
Manejo de Ficheros en Java: Detección de Black SEO
public class DetectarBlackSEO {
public static void main(String[] args) {
String rutaFichero = "html.txt"; // Nombre del archivo que contiene el HTML
try (BufferedReader lector = new BufferedReader(new FileReader(rutaFichero))) {
String linea;
int numeroLinea = 1;
while ((linea = lector.readLine()) != null) {
// Comprobamos si hay black SEO en esta línea
if (linea.contains("display:none")) {
System.out.println("⚠️ Black SEO detectado en línea " + numeroLinea + ": display:none");
}
if (linea.contains("font-size:0px")) {
System.out.println("⚠️ Black SEO detectado en línea " + numeroLinea + ": font-size:0px");
}
if (linea.contains("visibility:hidden")) {
System.out.println("⚠️ Black SEO detectado en línea " + numeroLinea + ": visibility:hidden");
}
numeroLinea++;
}
} catch (IOException e) {
System.out.println("❌ Error al leer el archivo: " + e.getMessage());
}
}
}
Programación Orientada a Objetos (POO) en Java: Conceptos Fundamentales
public class Coche {
// 1. Atributos (propiedades)
String marca;
String modelo;
int año;
boolean encendido;
// 2. Constructor (se usa para crear objetos)
public Coche(String marca, String modelo, int año) {
this.marca = marca;
this.modelo = modelo;
this.año = año;
this.encendido = false; // al principio está apagado
}
// 3. Métodos (comportamientos)
public void encender() {
if (!encendido) {
encendido = true;
System.out.println("🚗 El coche se ha encendido.");
} else {
System.out.println("⚠️ El coche ya estaba encendido.");
}
}
public void apagar() {
if (encendido) {
encendido = false;
System.out.println("🔌 El coche se ha apagado.");
} else {
System.out.println("⚠️ El coche ya estaba apagado.");
}
}
public void mostrarInfo() {
System.out.println("Coche: " + marca + " " + modelo + " (" + año + ")");
System.out.println("¿Encendido?: " + encendido);
}
}
Ejemplo de Uso de POO: Clase Principal
public class Principal {
public static void main(String[] args) {
Coche miCoche = new Coche("Toyota", "Corolla", 2020);
miCoche.mostrarInfo(); // Ver info del coche
miCoche.encender(); // Encenderlo
miCoche.apagar(); // Apagarlo
}
}
Manejo de Excepciones en Java
Este ejemplo muestra cómo manejar diferentes tipos de excepciones al realizar una división.
import java.util.InputMismatchException;
import java.util.Scanner;
public class CalculadoraDivision {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int numerador = 0;
int denominador = 0;
boolean correcto = false;
while (!correcto) {
try {
// Pedimos los números
System.out.print("Introduce el numerador: ");
numerador = sc.nextInt();
System.out.print("Introduce el denominador: ");
denominador = sc.nextInt();
// Intentamos dividir
int resultado = numerador / denominador;
System.out.println("✅ Resultado: " + resultado);
correcto = true; // Salimos del bucle si todo va bien
} catch (ArithmeticException e) {
System.out.println("❌ Error: No se puede dividir entre cero.");
sc.nextLine(); // limpiamos el salto de línea
} catch (InputMismatchException e) {
System.out.println("❌ Error: Debes introducir un número entero.");
sc.nextLine(); // limpiamos el texto que metió mal
}
}
System.out.println("Programa terminado.");
sc.close(); // Cerrar el scanner
}
}