Consultando dados no banco de dados SQLite de aplicativos Node.js

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:

  1. Abra uma conexão de banco de dados .
  2. Execute uma SELECTinstrução e processe o conjunto de resultados.
  3. Feche a conexão com o banco de dados.

O sqlite3mó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 errargumento armazena os detalhes do erro caso tenha ocorrido um erro durante a execução da consulta. Caso contrário, errserá null.

Se a consulta for executada com sucesso, o rowsargumento 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 playliststabela 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 Databaseobjeto.

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 rowargumento é undefined.

O get.jsprograma 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.jsprograma.

>node get.js
1 'Music'
Linguagem de código:  JavaScript  ( javascript )

A saída mostra a Musiclista de reprodução correta.

Se você alterar playlistIdpara 0 e executar o get.jsprograma 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 errparâmetro contém informações detalhadas.

O each.jsprograma a seguir ilustra como usar o each()método para consultar os dados dos clientes na customerstabela.

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.jsprograma:

>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 Databaseobjeto para consultar dados do banco de dados SQLite.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *