CoffeeScript - SQLite

SQLite é um mecanismo de banco de dados relacional leve e baseado em esquema. É uma escolha popular como software de banco de dados embutido para armazenamento local em navegadores da web.

Ao contrário de muitos outros sistemas de gerenciamento de banco de dados, o SQLite não é um mecanismo de banco de dados cliente-servidor. Para obter mais informações, leia nosso Tutorial SQLite

Neste capítulo, você aprenderá como se comunicar com o banco de dados SQLite usando CoffeeScript.

Instalação

O banco de dados SQLite3 pode ser integrado ao CoffeeScript usando node-sqlite3módulo. Este módulo funciona com Node.js v0.10.x, v0.12.x, v4.x e v5.x. Este módulo fornece várias funções para se comunicar com SQLite3 usando CoffeeScript, além disso, ele também fornece uma consulta direta e interface de ligação de parâmetro e uma API de serialização de consulta.

Você pode instalar o módulo node-sqlite3 usando npm como mostrado abaixo.

npm install sqlite3

Para usar o módulo sqlite3, você deve primeiro criar um objeto de conexão que represente o banco de dados e este objeto o ajudará a executar todas as instruções SQL.

Conectando ao banco de dados

Para se conectar ao banco de dados SQLite, primeiro de tudo crie seu pacote invocando o require() função do node-sqlite3 módulo e passe a string sqlite3como um parâmetro para ele. Em seguida, conecte-se a um banco de dados passando o nome do banco de dados parasqlite3.Database() construir.

O código CoffeeScript a seguir mostra como se conectar a um banco de dados existente. Se o banco de dados não existir, ele será criado com o nome fornecidotest.db, aberto e finalmente o objeto de banco de dados será retornado.

#Creating sqlite3 package
sqlite3 = require('sqlite3')

#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Database opened successfully."

Nós também podemos fornecer :memory:para criar um banco de dados anônimo na memória e uma string vazia para criar um banco de dados anônimo baseado em disco, em vez de test.db. Salve o código acima em um arquivo com o nomecreate_db.coffeee execute-o conforme mostrado abaixo. Se o banco de dados for criado com sucesso, ele produzirá a seguinte mensagem -

c:\> coffee create_db.coffee
Successfully connected

Criação de uma mesa

Você pode criar uma tabela no banco de dados SQLite através do CoffeeScript usando o run()função. Passe a consulta para criar uma tabela para esta função no formato String.

O seguinte programa CoffeeScript será usado para criar uma tabela anteriormente test.db banco de dados -

#Creating sqlite3 package
sqlite3 = require('sqlite3')

#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Successfully connected"

db.serialize ->
  db.run 'CREATE TABLE STUDENT (name TEXT, age INTEGER, city TEXT)'
  console.log "Table created successfully"  
  return
db.close()

o serialize()função define o banco de dados no modo serializado. Neste modo, sempre que houver um retorno de chamada, ele será chamado imediatamente. As consultas nesse retorno de chamada são executadas em série. Logo a função retorna. O banco de dados será colocado no modo normal novamente. Depois de concluir a transação, precisamos fechar a conexão usandoclose() função.

Salve o código acima em um arquivo com o nome create_table.coffeee execute-o conforme mostrado abaixo. Isso criará uma tabela chamadaSTUDENTno banco de dados test.db exibindo as seguintes mensagens.

C:\> coffee create_table.coffee
Successfully connected
Table created successfully

Inserindo / Criando Dados

Você pode inserir dados no banco de dados SQLite por meio do código CoffeeScript executando a instrução insert. Para fazer isso, podemos usar oprepare() função que prepara instruções SQL.

Ele também aceita consulta com variáveis ​​de ligação (?), os valores dessas variáveis ​​podem ser anexados usando run()função. Você pode inserir vários registros usando a declaração preparada, e depois de inserir todos os registros, você precisa finalizar a declaração preparada usandofinalize() função.

O programa CoffeeScript a seguir mostra como inserir registros na tabela denominada ALUNO criada no exemplo anterior.

#Creating sqlite3 package
sqlite3 = require('sqlite3').verbose()

#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Successfully connected"

db.serialize ->
  stmt = db.prepare('INSERT INTO STUDENT VALUES (?,?,?)')
  stmt.run 'Ram',24,'Hyderabad'
  stmt.run 'Robert',25,'Mumbai'
  stmt.run 'Rahim',26,'Bangalore'
  stmt.finalize()
  console.log "Data inserted successfully"
  return
db.close()

Salve o código acima em um arquivo com o nome insert_data.coffeee execute-o conforme mostrado abaixo. Isso preencherá a tabela denominada STUDENT exibindo as seguintes mensagens.

C:\> coffee insert_data.coffee
Successfully connected
Data inserted successfully

Leitura / recuperação de dados

Você pode obter os dados de uma tabela SQLite usando o each()função. Esta função aceita uma função de retorno de chamada opcional que será chamada em cada linha.

O programa CoffeeScript a seguir mostra como podemos buscar e exibir os registros da tabela chamada STUDENT criada no exemplo anterior

#Creating sqlite3 package
sqlite3 = require('sqlite3').verbose()

#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Successfully connected"

db.serialize ->
  console.log "The contents of the table STUDENT are ::"
  db.each 'SELECT rowid AS id, name,age,city FROM STUDENT', (err, row) ->
    console.log row.id + ': ' +row.name+', '+ row.age+', '+ row.city
    return
  return
db.close()

Salve o código acima em um arquivo com o nome retrive_data.coffeee execute-o conforme mostrado abaixo. Isso recupera todos os registros na tabela denominada STUDENT e exibe no console da seguinte maneira.

C:\> coffee retrive_data.coffee
Successfully connected
The contents of the table STUDENT are ::
1: Ram, 24, Hyderabad
2: Robert, 25, Mumbai
3: Rahim, 26, Bangalore

Atualizando Dados

O código CoffeeScript a seguir mostra como podemos usar a instrução UPDATE para atualizar qualquer registro e, em seguida, buscar e exibir os registros atualizados na tabela chamada STUDENT

#Creating sqlite3 package
sqlite3 = require('sqlite3').verbose()

#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Successfully connected"

db.serialize ->
  #Updating data
  stmt = db.prepare('UPDATE STUDENT SET city = ? where name = ?')
  stmt.run 'Delhi','Ram'
  console.log "Table updated"
  stmt.finalize()

  #Retrieving data after update operation
  console.log "The contents of the table STUDENT after update operation are ::"
  db.each 'SELECT rowid AS id, name, city FROM STUDENT', (err, row) ->
    console.log row.id + ': ' +row.name+', '+ row.city
    return
  return
db.close()

Salve o código acima em um arquivo com o nome update_data.coffeee execute-o conforme mostrado abaixo. Isso atualiza a cidade do aluno chamado Ram e exibe todos os registros na tabela após a operação de atualização da seguinte maneira.

C:\> coffee update_data.coffee
Successfully connected
Table updated
The contents of the table STUDENT after update operation are ::
1: Ram, Delhi
2: Robert, Mumbai
3: Rahim, Bangalore

Excluindo Dados

O código CoffeeScript a seguir mostra como podemos usar a instrução DELETE para excluir qualquer registro e, em seguida, buscar e exibir os registros restantes da tabela denominada STUDENT.

#Creating sqlite3 package
sqlite3 = require('sqlite3').verbose()

#Creating a Database instance
db = new (sqlite3.Database)('test.db')
console.log "Successfully connected"

db.serialize ->
  #Deleting data
  stmt = db.prepare('DELETE FROM STUDENT WHERE name = ?')
  stmt.run 'Ram'
  console.log "Record deleted"
  stmt.finalize()

  #Retrieving data after delete operation
  console.log "The contents of the table STUDENT after delete operation are ::"
  db.each 'SELECT rowid AS id, name, city FROM STUDENT', (err, row) ->
    console.log row.id + ': ' +row.name+', '+ row.city
    return
  return
db.close()

Salve o código acima em um arquivo com o nome delete_data.coffeee execute-o conforme mostrado abaixo. Ele exclui o registro do aluno chamado Ram e exibe todos os restantes na tabela após a operação de exclusão como segue.

Successfully connected
Record deleted
The contents of the table STUDENT after delete operation are ::
2: Robert, Mumbai
3: Rahim, Bangalore