En este artículo, vamos a explorar cómo crear una aplicación CRUD (Crear, Leer, Actualizar, Eliminar) en Android usando Kotlin y SQLite. La aplicación gestionará información sobre trabajadores, permitiendo al usuario agregar, consultar, actualizar y eliminar registros en una base de datos local.
Estructura del Proyecto
La aplicación consta de las siguientes partes principales:
- Actividad Principal (
MainActivity
): Pantalla de inicio que proporciona botones para navegar a las actividades de agregar y eliminar trabajadores. - Base de Datos (
BaseDeDatos
): Clase que maneja las operaciones CRUD en SQLite. - Clases de Actividad (
CrearTrabajador
,BorrarTrabajador
): Cada una representa una pantalla donde el usuario puede realizar operaciones CRUD específicas. - Diseño XML (
activity_main.xml
): Archivo XML que define la interfaz de usuario de la actividad principal.
1. Actividad Principal (MainActivity
)
La clase MainActivity
es el punto de entrada de la aplicación. Aquí se definen los botones para cada operación CRUD y se les asignan acciones que abren las actividades correspondientes.
package com.example.crud
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
// Botón para abrir la actividad de creación de trabajadores
val crear: Button = findViewById(R.id.buttonagregar)
crear.setOnClickListener {
val intent = Intent(this, CrearTrabajador::class.java)
startActivity(intent)
}
// Botón para abrir la actividad de eliminación de trabajadores
val borrar: Button = findViewById(R.id.buttoneliminar)
borrar.setOnClickListener {
val intent = Intent(this, BorrarTrabajador::class.java)
startActivity(intent)
}
}
}
En este código:
enableEdgeToEdge()
habilita el diseño de borde a borde en Android.- Los botones “Agregar” y “Eliminar” se configuran con
setOnClickListener
para abrir las actividadesCrearTrabajador
yBorrarTrabajador
, respectivamente.
2. Base de Datos (BaseDeDatos
)
La clase BaseDeDatos
extiende SQLiteOpenHelper
y se encarga de las operaciones CRUD.
package com.example.crud
import android.content.ContentValues
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
data class Trabajador(val id: Int = 0, val name: String, val apellido: String, val cargo: String, val salario: Double, val activo: Boolean)
class BaseDeDatos(context: Context) : SQLiteOpenHelper(context, "biblioteca.db", null, 1) {
override fun onCreate(db: SQLiteDatabase?) {
val crearTabla = """
CREATE TABLE Trabajadores(
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT,
apellido TEXT,
cargo TEXT,
salario REAL,
activo BOOLEAN
)
"""
db?.execSQL(crearTabla)
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db?.execSQL("DROP TABLE IF EXISTS Trabajadores")
onCreate(db)
}
fun insertarTrabajador(trabajador: Trabajador): Boolean {
val db = this.writableDatabase
val values = ContentValues()
values.put("nombre", trabajador.name)
values.put("apellido", trabajador.apellido)
values.put("cargo", trabajador.cargo)
values.put("salario", trabajador.salario)
values.put("activo", trabajador.activo)
val result = db.insert("Trabajadores", null, values)
db.close()
return result != -1L
}
// Funciones para consultar, actualizar y eliminar trabajadores omitidas para brevedad...
}
En BaseDeDatos
:
onCreate()
crea la tablaTrabajadores
con columnas para ID, nombre, apellido, cargo, salario y si está activo.insertarTrabajador()
inserta un nuevo registro en la base de datos. Retornatrue
si la inserción fue exitosa.
3. Clase BorrarTrabajador
La clase BorrarTrabajador
es una actividad que permite al usuario eliminar un trabajador de la base de datos.
package com.example.crud
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
class BorrarTrabajador : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_borrar_trabajador)
val editConsultar: EditText = findViewById(R.id.editConsultar)
val buttonBorrar: Button = findViewById(R.id.buttonconsultar)
buttonBorrar.setOnClickListener {
val valor = editConsultar.text.toString().toIntOrNull()
if (valor != null) {
val dbHelper = BaseDeDatos(this)
val resultado = dbHelper.eliminarTrabajador(valor)
if (resultado) {
Toast.makeText(this, "Trabajador eliminado correctamente", Toast.LENGTH_SHORT).show()
finish()
} else {
Toast.makeText(this, "Error al borrar trabajador", Toast.LENGTH_SHORT).show()
}
} else {
Toast.makeText(this, "Ingrese un ID válido", Toast.LENGTH_SHORT).show()
}
}
}
}
Aquí:
buttonBorrar
tiene unsetOnClickListener
que obtiene el ID del trabajador desdeeditConsultar
.- Llama a
eliminarTrabajador(id)
deBaseDeDatos
y muestra un mensaje de confirmación o error conToast
.
4. Diseño de Interfaz (activity_main.xml
)
En el archivo XML de la actividad principal, se definen los botones que permiten al usuario navegar entre las actividades de CRUD.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/buttonagregar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Agregar"
app:layout_constraintBottom_toTopOf="@+id/buttoneliminar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/buttonconsultar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Consultar"
app:layout_constraintBottom_toTopOf="@+id/buttonagregar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/buttonactualizar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Actualizar"
app:layout_constraintBottom_toTopOf="@+id/buttonconsultar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/buttoneliminar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Eliminar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Este archivo define cuatro botones alineados verticalmente para realizar cada operación CRUD.
Conclusión
En este artículo hemos creado una aplicación CRUD básica en Android con Kotlin, utilizando SQLite como base de datos. La aplicación permite agregar, consultar, actualizar y eliminar información de trabajadores de manera sencilla.
¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.
¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos.
NUESTRAS ÚLTIMAS PUBLICACIONES
- La importancia de mantener un ritmo de estudio durante las navidades.
- Cómo Multiplicar Matrices en Java: Guía Completa con Ejemplo Práctico
- Triunfos y logros de nuestra Academia SanRoque
- Herramientas Imprescindibles para Realizar Ingeniería Inversa en Java
- ¿A qué nivel de conversación en inglés estás dispuesto a llegar con Academia SanRoque?
- Cómo Resolver una Ecuación de Segundo Grado con GNU Octave
- Cuando vienes a la Academia SaRoque justo antes del examen final.
- 25N Día Internacional para la Eliminación de la Violencia contra la Mujer
- Cuando el profesor nos da la última oportunidad.
ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
Contenido restringido
Comments are closed