Introducción
En este artículo, exploraremos cómo implementar una base de datos SQLite en una aplicación de Android utilizando la clase SQLiteOpenHelper
. Nuestro ejemplo se centrará en la creación de una biblioteca que administra libros, permitiendo al usuario insertar, consultar y actualizar información de los libros almacenados. La estructura de nuestra base de datos es sencilla y eficiente, diseñada para realizar operaciones CRUD básicas.
Estructura de la Base de Datos
La base de datos estará compuesta por una tabla llamada Libros
, que contiene los siguientes campos:
- ISBN: Código único de identificación de cada libro.
- Titulo: Título del libro.
- Autor: Nombre del autor.
- EjemplaresTotales: Número total de ejemplares disponibles.
- EjemplaresActual: Cantidad de ejemplares disponibles actualmente.
- Disponible: Estado de disponibilidad del libro.
Implementación de la Clase DatabaseHelper
La clase DatabaseHelper
extiende SQLiteOpenHelper
y se encarga de gestionar la creación y actualización de la base de datos.
class DatabaseHelper(context: Context) : SQLiteOpenHelper(context, "biblioteca.db", null, 1) {
override fun onCreate(db: SQLiteDatabase) {
db.execSQL(
"CREATE TABLE Libros (ISBN TEXT PRIMARY KEY, Titulo TEXT, Autor TEXT, EjemplaresTotales INTEGER, EjemplaresActual INTEGER, Disponible TEXT)"
)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
db.execSQL("DROP TABLE IF EXISTS Libros")
onCreate(db)
}
}
- onCreate: Define la estructura de la tabla
Libros
al inicializar la base de datos. - onUpgrade: Elimina la tabla existente y la recrea, asegurando que los cambios en la estructura de la base de datos se apliquen correctamente.
Clase Libro
Definimos la clase de datos Libro
que representa la entidad Libro
en la base de datos.
data class Libro(
val isbn: String,
val titulo: String,
val autor: String,
val ejemplaresTotales: Int,
val ejemplaresActual: Int,
val disponible: String
)
Métodos CRUD
Insertar un Libro
El método insertarLibro
permite agregar un nuevo libro a la base de datos. Devuelve true
si la inserción fue exitosa.
fun insertarLibro(libro: Libro): Boolean {
val db = this.writableDatabase
val values = ContentValues()
values.put("ISBN", libro.isbn)
values.put("Titulo", libro.titulo)
values.put("Autor", libro.autor)
values.put("EjemplaresTotales", libro.ejemplaresTotales)
values.put("EjemplaresActual", libro.ejemplaresActual)
values.put("Disponible", libro.disponible)
val result = db.insert("Libros", null, values)
db.close()
return result.toInt() != -1
}
Verificar Existencia de un Libro
Con existeLibro
, verificamos si un libro con un ISBN específico ya existe en la base de datos. Retorna true
si el libro está presente.
fun existeLibro(isbn: String): Boolean {
val db = this.readableDatabase
val cursor = db.rawQuery("SELECT * FROM Libros WHERE ISBN = ?", arrayOf(isbn))
val exists = cursor.moveToFirst()
cursor.close()
db.close()
return exists
}
Consultar un Libro
El método consultarLibro
busca un libro por su ISBN y devuelve un objeto Libro
con la información correspondiente. Si el libro no existe, retorna null
.
fun consultarLibro(isbn: String): Libro? {
val db = this.readableDatabase
val cursor = db.rawQuery("SELECT * FROM Libros WHERE ISBN = ?", arrayOf(isbn))
return if (cursor.moveToFirst()) {
val titulo = cursor.getString(cursor.getColumnIndexOrThrow("Titulo"))
val autor = cursor.getString(cursor.getColumnIndexOrThrow("Autor"))
val ejemplaresTotales = cursor.getInt(cursor.getColumnIndexOrThrow("EjemplaresTotales"))
val ejemplaresActual = cursor.getInt(cursor.getColumnIndexOrThrow("EjemplaresActual"))
val disponible = cursor.getString(cursor.getColumnIndexOrThrow("Disponible"))
cursor.close()
Libro(isbn, titulo, autor, ejemplaresTotales, ejemplaresActual, disponible)
} else {
cursor.close()
null
}
}
Actualizar Ejemplares de un Libro
Finalmente, el método actualizarLibroEjemplares
permite modificar la cantidad de ejemplares actuales y su disponibilidad. Devuelve true
si la actualización fue exitosa.
fun actualizarLibroEjemplares(isbn: String, ejemplaresActual: Int, disponible: String): Boolean {
val db = this.writableDatabase
val values = ContentValues()
values.put("EjemplaresActual", ejemplaresActual)
values.put("Disponible", disponible)
val result = db.update("Libros", values, "ISBN = ?", arrayOf(isbn))
db.close()
return result > 0
}
Conclusión
El código presentado constituye una base sólida para gestionar una biblioteca dentro de una aplicación Android. Los métodos CRUD implementados permiten interactuar con la base de datos de manera eficiente, simplificando la tarea de almacenar y recuperar información de libros en la aplicación.
NUESTRAS ÚLTIMAS PUBLICACIONES
- Proyectos que puedes empezar para aprender a programar (Academia San Roque)
- 15 ejercicios básicos en R (con soluciones)
- 📘 5 Ejercicios Sencillos de Programación en R (con soluciones)
- Guía para Aprender a Estudiar Programación con las 10 Claves de la Autodisciplina
- Serializar una lista de personas (nombre, apellido, DNI) en Java y guardarla en un archivo binario
- Simulacro de Examen — Fundamentos de Programación (Laboratorio)
- Reflexiones en Academia SanRoque: La importancia de la motivación, el esfuerzo y el aprendizaje en la educación y la formación
- CHECK Constraint en Oracle SQL: garantiza la calidad de tus datos paso a paso
- Simulacro #4 – Examen de C++ / Estructuras de Datos
- Simulacro #3 – Examen de C++ / Estructuras de Datos
- Simulacro #2 de Examen C++
- Simulacro de Examen de Estructuras de Datos en C++ (con Soluciones)Guía completa para repasar antes del parcial/final

Contenido restringido
Comments are closed