Resumo : neste tutorial, você aprenderá como consultar dados do banco de dados SQLite de uma aplicação Node.js usando a API sqlite3.
Para consultar dados no banco de dados SQLite de um aplicativo Node.js, siga estas etapas:
- Abra uma conexão de banco de dados .
- Execute uma
SELECT
instrução e processe o conjunto de resultados. - Feche a conexão com o banco de dados.
O sqlite3
módulo fornece alguns métodos para consultar dados como all()
, each()
e get()
.
Consultando todas as linhas com o método all()
O all()
método permite executar uma consulta SQL com parâmetros especificados e chamar um retorno de chamada para acessar as linhas no conjunto de resultados.
A seguir está a assinatura do all()
método:
db.all(sql,params,(err, rows ) => {
// process rows here
});
Linguagem de código: JavaScript ( javascript )
O err
argumento armazena os detalhes do erro caso tenha ocorrido um erro durante a execução da consulta. Caso contrário, err
será null
.
Se a consulta for executada com sucesso, o rows
argumento conterá o conjunto de resultados.
Como o all()
método recupera todas as linhas e as coloca na memória, portanto, para o grande conjunto de resultados, você deve usar o each()
método.
O exemplo a seguir ilustra como consultar dados da playlists
tabela no banco de dados de amostra usando o all()
método:
const sqlite3 = require('sqlite3').verbose();
// open the database
let db = new sqlite3.Database('./db/chinook.db');
let sql = `SELECT DISTINCT Name name FROM playlists
ORDER BY name`;
db.all(sql, [], (err, rows) => {
if (err) {
throw err;
}
rows.forEach((row) => {
console.log(row.name);
});
});
// close the database connection
db.close();
Linguagem de código: JavaScript ( javascript )
Vamos executar o programa.
>node all.js
90's Music
Audiobooks
Brazilian Music
Classical
Classical 101 - Deep Cuts
Classical 101 - Next Steps
Classical 101 - The Basics
Grunge
Heavy Metal Classic
Movies
Music
Music Videos
On-The-Go 1
TV Shows
Linguagem de código: JavaScript ( javascript )
A saída mostra todas as listas de reprodução conforme esperado.
Consulte a primeira linha no conjunto de resultados
Quando você sabe que o conjunto de resultados contém zero ou uma linha, por exemplo, consultando uma linha com base na chave primária ou consultando com apenas uma função agregada, como contagem, soma, máximo, mínimo, etc., você pode usar o get()
método do Database
objeto.
db.get(sql, params, (err, row) => {
// process the row here
});
Linguagem de código: JavaScript ( javascript )
O get()
método executa uma consulta SQL e chama a função de retorno de chamada na primeira linha de resultados. Caso o conjunto de resultados esteja vazio, o row
argumento é undefined
.
O get.js
programa a seguir demonstra como consultar uma lista de reprodução pelo seu ID:
const sqlite3 = require('sqlite3').verbose();
// open the database
let db = new sqlite3.Database('./db/chinook.db');
let sql = `SELECT PlaylistId id,
Name name
FROM playlists
WHERE PlaylistId = ?`;
let playlistId = 1;
// first row only
db.get(sql, [playlistId], (err, row) => {
if (err) {
return console.error(err.message);
}
return row
? console.log(row.id, row.name)
: console.log(`No playlist found with the id ${playlistId}`);
});
// close the database connection
db.close();
Linguagem de código: JavaScript ( javascript )
Vamos executar o get.js
programa.
>node get.js
1 'Music'
Linguagem de código: JavaScript ( javascript )
A saída mostra a Music
lista de reprodução correta.
Se você alterar playlistId
para 0 e executar o get.js
programa novamente:
>node get.js
No playlist found with the id 0
Linguagem de código: JavaScript ( javascript )
Mostrou que nenhuma playlist foi encontrada com id 0 conforme o esperado.
Consultar linhas com o método each()
O each()
método executa uma consulta SQL com parâmetros especificados e chama um retorno de chamada para cada linha no conjunto de resultados.
O seguinte ilustra o each()
método:
db.each(sql,params, (err, result) => {
// process each row here
});
Linguagem de código: JavaScript ( javascript )
Se o conjunto de resultados estiver vazio, o retorno de chamada nunca será chamado. Caso haja algum erro, o err
parâmetro contém informações detalhadas.
O each.js
programa a seguir ilustra como usar o each()
método para consultar os dados dos clientes na customers
tabela.
const sqlite3 = require('sqlite3').verbose();
// open the database
let db = new sqlite3.Database('../db/chinook.db');
let sql = `SELECT FirstName firstName,
LastName lastName,
Email email
FROM customers
WHERE Country = ?
ORDER BY FirstName`;
db.each(sql, ['USA'], (err, row) => {
if (err) {
throw err;
}
console.log(`${row.firstName} ${row.lastName} - ${row.email}`);
});
// close the database connection
db.close();
Linguagem de código: JavaScript ( javascript )
Vamos executar o each.js
programa:
>node each.js
Dan Miller - [email protected]
Frank Harris - [email protected]
Frank Ralston - [email protected]
Heather Leacock - [email protected]
Jack Smith - [email protected]
John Gordon - [email protected]
Julia Barnett - [email protected]
Kathy Chase - [email protected]
Michelle Brooks - [email protected]
Patrick Gray - [email protected]
Richard Cunningham - [email protected]
Tim Goyer - [email protected]
Victor Stevens - [email protected]
Linguagem de código: JavaScript ( javascript )
Como você pode ver, a função de retorno de chamada foi chamada para cada linha para imprimir as informações do cliente.
Neste tutorial, você aprendeu como usar vários métodos do Database
objeto para consultar dados do banco de dados SQLite.