SQLite es una base de datos ligera y sin servidor que podemos utilizar fácilmente en nuestras aplicaciones Node.js.
Con Node.js y el paquete sqlite3
, puedes conectar tu aplicación a una base de datos SQLite de forma rápida y sencilla.
Cómo conectar Node.js a SQLite
Para comenzar, asegúrate de tener Node.js instalado en tu sistema y luego instala el paquete sqlite3
utilizando NPM:
npm install sqlite3
Configuración de una DB en memoria
Similar a otros ejemplos de bases de datos, vamos a crear un archivo para manejar la conexión a SQLite. Por ejemplo, llamémoslo db.js
.
import sqlite from 'sqlite3';
// Crear una conexión a una base de datos en memoria
const db = new sqlite.Database(':memory:');
// Operaciones con la base de datos
db.serialize(() => {
// Crear una tabla
db.run("CREATE TABLE lorem (info TEXT)");
// Insertar datos en la tabla
const stmt = db.prepare("INSERT INTO lorem VALUES (?)");
for (let i = 0; i < 10; i++) {
stmt.run("Ipsum " + i);
}
stmt.finalize();
// Consultar datos de la tabla
db.each("SELECT rowid AS id, info FROM lorem", (err, row) => {
console.log(row.id + ": " + row.info);
});
});
// Cerrar la conexión cuando hayas terminado
db.close();
En este ejemplo, estamos creando una base de datos SQLite en memoria (:memory:
) y realizando operaciones CRUD básicas en ella.
Creación de una DB en un archivo
Si prefieres utilizar un archivo de base de datos físico en lugar de una base de datos en memoria, puedes hacerlo de la siguiente manera:
import sqlite from 'sqlite3';
const dbPath = './database.db'; // Ruta al archivo de base de datos
// Conectar a la base de datos en un archivo físico
const db = new sqlite.Database(dbPath);
// El resto del código es similar al ejemplo anterior
// ...
En este caso, estamos especificando una ruta al archivo de base de datos en lugar de utilizar la base de datos en memoria.
Operaciones CRUD
Una vez que tenemos el archivo de conexión, podemos utilizarlo para realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en nuestra base de datos SQLite desde Node.js.
Creación de datos
Primero veamos cómo insertar nuevos datos en la base de datos:
async function insertData(name, email) {
try {
// Insertamos datos en la tabla users
await db.run("INSERT INTO users (name, email) VALUES (?, ?)", [name, email]);
console.log('Datos insertados exitosamente');
} catch (error) {
console.error('Error al insertar datos:', error);
}
}
insertData('John Doe', 'john@example.com'); // Ejecutamos la función insertData con los datos proporcionados
Lectura de datos
Ahora veamos cómo obtener todos los usuarios de la base de datos:
async function fetchData() {
try {
// Consultamos todos los usuarios de la tabla users
const users = await db.all("SELECT * FROM users");
console.log('Todos los usuarios:', users);
} catch (error) {
console.error('Error al obtener datos:', error);
}
}
fetchData(); // Ejecutamos la función fetchData para obtener todos los usuarios
Actualización de datos
Veamos cómo actualizaríamos datos en la base de datos:
async function updateData(userId, newName) {
try {
// Actualizamos el nombre del usuario con el userId especificado
await db.run("UPDATE users SET name = ? WHERE id = ?", [newName, userId]);
console.log('Datos actualizados exitosamente');
} catch (error) {
console.error('Error al actualizar datos:', error);
}
}
updateData(1, 'Jane Smith'); // Ejecutamos la función updateData con los datos proporcionados
Eliminación de datos
Por último, veamos cómo eliminar datos de la base de datos:
async function deleteData(userId) {
try {
// Eliminamos el usuario con el userId especificado
await db.run("DELETE FROM users WHERE id = ?", [userId]);
console.log('Datos eliminados exitosamente');
} catch (error) {
console.error('Error al eliminar datos:', error);
}
}
deleteData(2); // Ejecutamos la función deleteData con el ID del usuario a eliminar
Descarga el código
Todo el código de esta entrada está disponible para su descarga en Github