CoffeeScript - SQLite

SQLite est un moteur de base de données relationnelle léger basé sur des schémas. C'est un choix populaire en tant que logiciel de base de données intégré pour le stockage local dans les navigateurs Web.

Contrairement à de nombreux autres systèmes de gestion de base de données, SQLite n'est pas un moteur de base de données client-serveur. Pour plus d'informations, lisez notre didacticiel SQLite

Dans ce chapitre, vous apprendrez à communiquer avec la base de données SQLite à l'aide de CoffeeScript.

Installation

La base de données SQLite3 peut être intégrée à CoffeeScript en utilisant node-sqlite3module. Ce module fonctionne avec Node.js v0.10.x, v0.12.x, v4.x et v5.x. Ce module répond à diverses fonctions pour communiquer avec SQLite3 à l'aide de CoffeeScript, en plus de cela, il fournit également une interface de requête et de liaison de paramètres simple, et une API de sérialisation de requête.

Vous pouvez installer le module node-sqlite3 à l'aide de npm comme indiqué ci-dessous.

npm install sqlite3

Pour utiliser le module sqlite3, vous devez d'abord créer un objet de connexion qui représente la base de données et cet objet vous aidera à exécuter toutes les instructions SQL.

Connexion à la base de données

Pour vous connecter à la base de données SQLite, créez tout d'abord son package en invoquant le require() fonction de la node-sqlite3 module et passez la chaîne sqlite3comme paramètre de celui-ci. Puis connectez-vous à une base de données en passant le nom de la base de données àsqlite3.Database() construction.

Le code CoffeeScript suivant montre comment se connecter à une base de données existante. Si la base de données n'existe pas, elle sera créée avec le nom donnétest.db, ouvert et finalement l'objet de base de données sera retourné.

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

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

Nous pouvons également fournir :memory:pour créer une base de données anonyme en mémoire et, une chaîne vide pour créer une base de données anonyme sur disque, au lieu de test.db. Enregistrez le code ci-dessus dans un fichier avec un nomcreate_db.coffeeet exécutez-le comme indiqué ci-dessous. Si la base de données est créée avec succès, elle produira le message suivant -

c:\> coffee create_db.coffee
Successfully connected

Créer une table

Vous pouvez créer une table dans la base de données SQLite via CoffeeScript en utilisant le run()fonction. Transmettez la requête pour créer une table à cette fonction au format String.

Le programme CoffeeScript suivant sera utilisé pour créer une table précédemment test.db base de données -

#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()

le serialize()La fonction définit la base de données en mode sérialisé. Dans ce mode, chaque fois qu'un callback rencontre, il sera appelé immédiatement. Les requêtes de ce rappel sont exécutées en série. Bientôt, la fonction revient. La base de données sera à nouveau remise en mode normal. Après avoir terminé la transaction, nous devons fermer la connexion en utilisantclose() fonction.

Enregistrez le code ci-dessus dans un fichier avec un nom create_table.coffeeet exécutez-le comme indiqué ci-dessous. Cela créera une table nomméeSTUDENTdans la base de données test.db affichant les messages suivants.

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

Insertion / création de données

Vous pouvez insérer des données dans la base de données SQLite via le code CoffeeScript en exécutant l'instruction d'insertion. Pour ce faire, nous pouvons utiliser leprepare() fonction qui prépare les instructions SQL.

Il accepte également les requêtes avec des variables de liaison (?), les valeurs de ces variables peuvent être associées en utilisant run()fonction. Vous pouvez insérer plusieurs enregistrements en utilisant l'instruction préparée, et après avoir inséré tous les enregistrements, vous devez finaliser l'instruction préparée en utilisantfinalize() fonction.

Le programme CoffeeScript suivant montre comment insérer des enregistrements dans la table nommée STUDENT créée dans l'exemple précédent.

#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()

Enregistrez le code ci-dessus dans un fichier avec un nom insert_data.coffeeet exécutez-le comme indiqué ci-dessous. Cela remplira la table nommée STUDENT affichant les messages suivants.

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

Lecture / récupération de données

Vous pouvez obtenir les données d'une table SQLite en utilisant le each()fonction. Cette fonction accepte une fonction de rappel optionnelle qui sera appelée sur chaque ligne.

Le programme CoffeeScript suivant montre comment nous pouvons récupérer et afficher les enregistrements de la table nommée STUDENT créée dans l'exemple précédent

#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()

Enregistrez le code ci-dessus dans un fichier avec un nom retrive_data.coffeeet exécutez-le comme indiqué ci-dessous. Cela récupère tous les enregistrements de la table nommée STUDENT et s'affiche sur la console comme suit.

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

Mise à jour des données

Le code CoffeeScript suivant montre comment nous pouvons utiliser l'instruction UPDATE pour mettre à jour n'importe quel enregistrement, puis récupérer et afficher les enregistrements mis à jour dans la table nommée 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()

Enregistrez le code ci-dessus dans un fichier avec un nom update_data.coffeeet exécutez-le comme indiqué ci-dessous. Cela met à jour la ville de l'élève nommé Ram et affiche tous les enregistrements de la table après l'opération de mise à jour comme suit.

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

Suppression de données

Le code CoffeeScript suivant montre comment nous pouvons utiliser l'instruction DELETE pour supprimer n'importe quel enregistrement, puis extraire et afficher les enregistrements restants de la table nommée 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()

Enregistrez le code ci-dessus dans un fichier avec un nom delete_data.coffeeet exécutez-le comme indiqué ci-dessous. Il supprime l'enregistrement de l'élève nommé Ram et affiche tout le reste du tableau après l'opération de suppression comme suit.

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