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