Operaciones CRUD
jueves, 26 de octubre de 2023
⁃
Dificultad:
Intermedio
Objetivo
Cree un programa Java que permita realizar operaciones CRUD desde SQLite, el programa debe tener el siguiente menú:
- 1. Añadir
- 2. Ver
- 3. Editar
- 4. Eliminar
- 5. Salir
Primero prepare una base de datos SQLite versión 3 de personas con una tabla de persona utilizando la consulta SQL de la entrada. Después cree las operaciones CRUD (añadir, ver, editar y eliminar).
Añadir
Solicite un nombre y una edad al usuario y inserte los datos en la base de datos.
Ver
Muestre todas las personas guardadas en la base de datos.
Editar
Solicite el código de persona al usuario y si existe solicite el nuevo nombre y edad para modificar los datos de la base de datos.
Eliminar
Solicite el código de persona al usuario y si existe elimine la persona de la base de datos.
Salir
Finalice el programa.
No tendrá que preocuparse por el código de la persona ya que es autoincremental.
Entrada
create table if not exists persona
(
cod integer primary key autoincrement,
nombre varchar(20),
edad int
)
Salida
Solución
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class CRUDSQLite {
public static void main(String[] args) {
String url = "jdbc:sqlite:persons.db";
// Crear la tabla de persona si no existe
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement stmt = conn.prepareStatement(
"CREATE TABLE IF NOT EXISTS person (cod INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INT)"
)) {
stmt.execute();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
int opcion;
Scanner scanner = new Scanner(System.in);
do {
System.out.println("\nMenú:");
System.out.println("1. Añadir");
System.out.println("2. Ver");
System.out.println("3. Editar");
System.out.println("4. Eliminar");
System.out.println("5. Salir");
System.out.print("Elija una opción: ");
opcion = scanner.nextInt();
switch (opcion) {
case 1:
añadirPersona(url);
break;
case 2:
verPersonas(url);
break;
case 3:
editarPersona(url);
break;
case 4:
eliminarPersona(url);
break;
}
} while (opcion != 5);
}
public static void añadirPersona(String url) {
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
Scanner scanner = new Scanner(System.in);
System.out.print("Nombre: ");
String name = scanner.nextLine();
System.out.print("Edad: ");
int age = scanner.nextInt();
try (PreparedStatement stmt = conn.prepareStatement("INSERT INTO person (name, age) VALUES (?, ?)")) {
stmt.setString(1, name);
stmt.setInt(2, age);
stmt.executeUpdate();
conn.commit();
System.out.println("Persona añadida con éxito.");
} catch (SQLException e) {
conn.rollback();
System.out.println("Error al añadir persona: " + e.getMessage());
}
} catch (SQLException e) {
System.out.println("Error al conectar a la base de datos: " + e.getMessage());
}
}
public static void verPersonas(String url) {
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement stmt = conn.prepareStatement("SELECT cod, name, age FROM person");
ResultSet rs = stmt.executeQuery()) {
System.out.println("\nPersonas en la base de datos:");
while (rs.next()) {
System.out.println("Código: " + rs.getInt("cod"));
System.out.println("Nombre: " + rs.getString("name"));
System.out.println("Edad: " + rs.getInt("age"));
System.out.println();
}
} catch (SQLException e) {
System.out.println("Error al ver personas: " + e.getMessage());
}
}
public static void editarPersona(String url) {
Scanner scanner = new Scanner(System.in);
System.out.print("Código de la persona a editar: ");
int cod = scanner.nextInt();
if (existePersona(url, cod)) {
System.out.print("Nuevo nombre: ");
String nuevoNombre = scanner.next();
System.out.print("Nueva edad: ");
int nuevaEdad = scanner.nextInt();
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
try (PreparedStatement stmt = conn.prepareStatement("UPDATE person SET name = ?, age = ? WHERE cod = ?")) {
stmt.setString(1, nuevoNombre);
stmt.setInt(2, nuevaEdad);
stmt.setInt(3, cod);
stmt.executeUpdate();
conn.commit();
System.out.println("Persona editada con éxito.");
} catch (SQLException e) {
conn.rollback();
System.out.println("Error al editar persona: " + e.getMessage());
}
} catch (SQLException e) {
System.out.println("Error al conectar a la base de datos: " + e.getMessage());
}
} else {
System.out.println("Persona no encontrada.");
}
}
public static void eliminarPersona(String url) {
Scanner scanner = new Scanner(System.in);
System.out.print("Código de la persona a eliminar: ");
int cod = scanner.nextInt();
if (existePersona(url, cod)) {
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM person WHERE cod = ?")) {
stmt.setInt(1, cod);
stmt.executeUpdate();
conn.commit();
System.out.println("Persona eliminada con éxito.");
} catch (SQLException e) {
conn.rollback();
System.out.println("Error al eliminar persona: " + e.getMessage());
}
} catch (SQLException e) {
System.out.println("Error al conectar a la base de datos: " + e.getMessage());
}
} else {
System.out.println("Persona no encontrada.");
}
}
public static boolean existePersona(String url, int cod) {
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement stmt = conn.prepareStatement("SELECT 1 FROM person WHERE cod = ?")) {
stmt.setInt(1, cod);
try (ResultSet rs = stmt.executeQuery()) {
return rs.next();
}
} catch (SQLException e) {
System.out.println("Error al verificar existencia de persona: " + e.getMessage());
}
return false;
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class CRUDSQLite {
public static void main(String[] args) {
String url = "jdbc:sqlite:persons.db";
// Crear la tabla de persona si no existe
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement stmt = conn.prepareStatement(
"CREATE TABLE IF NOT EXISTS person (cod INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INT)"
)) {
stmt.execute();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
int opcion;
Scanner scanner = new Scanner(System.in);
do {
System.out.println("\nMenú:");
System.out.println("1. Añadir");
System.out.println("2. Ver");
System.out.println("3. Editar");
System.out.println("4. Eliminar");
System.out.println("5. Salir");
System.out.print("Elija una opción: ");
opcion = scanner.nextInt();
switch (opcion) {
case 1:
añadirPersona(url);
break;
case 2:
verPersonas(url);
break;
case 3:
editarPersona(url);
break;
case 4:
eliminarPersona(url);
break;
}
} while (opcion != 5);
}
public static void añadirPersona(String url) {
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
Scanner scanner = new Scanner(System.in);
System.out.print("Nombre: ");
String name = scanner.nextLine();
System.out.print("Edad: ");
int age = scanner.nextInt();
try (PreparedStatement stmt = conn.prepareStatement("INSERT INTO person (name, age) VALUES (?, ?)")) {
stmt.setString(1, name);
stmt.setInt(2, age);
stmt.executeUpdate();
conn.commit();
System.out.println("Persona añadida con éxito.");
} catch (SQLException e) {
conn.rollback();
System.out.println("Error al añadir persona: " + e.getMessage());
}
} catch (SQLException e) {
System.out.println("Error al conectar a la base de datos: " + e.getMessage());
}
}
public static void verPersonas(String url) {
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement stmt = conn.prepareStatement("SELECT cod, name, age FROM person");
ResultSet rs = stmt.executeQuery()) {
System.out.println("\nPersonas en la base de datos:");
while (rs.next()) {
System.out.println("Código: " + rs.getInt("cod"));
System.out.println("Nombre: " + rs.getString("name"));
System.out.println("Edad: " + rs.getInt("age"));
System.out.println();
}
} catch (SQLException e) {
System.out.println("Error al ver personas: " + e.getMessage());
}
}
public static void editarPersona(String url) {
Scanner scanner = new Scanner(System.in);
System.out.print("Código de la persona a editar: ");
int cod = scanner.nextInt();
if (existePersona(url, cod)) {
System.out.print("Nuevo nombre: ");
String nuevoNombre = scanner.next();
System.out.print("Nueva edad: ");
int nuevaEdad = scanner.nextInt();
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
try (PreparedStatement stmt = conn.prepareStatement("UPDATE person SET name = ?, age = ? WHERE cod = ?")) {
stmt.setString(1, nuevoNombre);
stmt.setInt(2, nuevaEdad);
stmt.setInt(3, cod);
stmt.executeUpdate();
conn.commit();
System.out.println("Persona editada con éxito.");
} catch (SQLException e) {
conn.rollback();
System.out.println("Error al editar persona: " + e.getMessage());
}
} catch (SQLException e) {
System.out.println("Error al conectar a la base de datos: " + e.getMessage());
}
} else {
System.out.println("Persona no encontrada.");
}
}
public static void eliminarPersona(String url) {
Scanner scanner = new Scanner(System.in);
System.out.print("Código de la persona a eliminar: ");
int cod = scanner.nextInt();
if (existePersona(url, cod)) {
try (Connection conn = DriverManager.getConnection(url)) {
conn.setAutoCommit(false);
try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM person WHERE cod = ?")) {
stmt.setInt(1, cod);
stmt.executeUpdate();
conn.commit();
System.out.println("Persona eliminada con éxito.");
} catch (SQLException e) {
conn.rollback();
System.out.println("Error al eliminar persona: " + e.getMessage());
}
} catch (SQLException e) {
System.out.println("Error al conectar a la base de datos: " + e.getMessage());
}
} else {
System.out.println("Persona no encontrada.");
}
}
public static boolean existePersona(String url, int cod) {
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement stmt = conn.prepareStatement("SELECT 1 FROM person WHERE cod = ?")) {
stmt.setInt(1, cod);
try (ResultSet rs = stmt.executeQuery()) {
return rs.next();
}
} catch (SQLException e) {
System.out.println("Error al verificar existencia de persona: " + e.getMessage());
}
return false;
}
}
Haz clic aquí para ver la solución del ejercicio
Compártelo
Compártelo en tus redes sociales y desafía a tus amigos a resolver problemas de programación. Juntos, podemos aprender y crecer.
Copiado
El codigo se ha copiado correctamente en el portapapeles.