CoffeeScript - SQLite

SQLite es un motor de base de datos relacional ligero y basado en esquemas. Es una opción popular como software de base de datos integrado para almacenamiento local en navegadores web.

A diferencia de muchos otros sistemas de administración de bases de datos, SQLite no es un motor de base de datos cliente-servidor. Para obtener más información, lea nuestro tutorial de SQLite

En este capítulo, aprenderá a comunicarse con la base de datos SQLite utilizando CoffeeScript.

Instalación

La base de datos SQLite3 se puede integrar con CoffeeScript usando node-sqlite3módulo. Este módulo funciona con Node.js v0.10.x, v0.12.x, v4.x y v5.x. Este módulo ofrece varias funciones para comunicarse con SQLite3 usando CoffeeScript, además de esto, también proporciona una interfaz sencilla de consulta y enlace de parámetros, y una API de serialización de consultas.

Puede instalar el módulo node-sqlite3 usando npm como se muestra a continuación.

npm install sqlite3

Para usar el módulo sqlite3, primero debe crear un objeto de conexión que represente la base de datos y este objeto lo ayudará a ejecutar todas las declaraciones SQL.

Conectando a la base de datos

Para conectarse a la base de datos SQLite, primero cree su paquete invocando el require() función de la node-sqlite3 módulo y pasar la cadena sqlite3como un parámetro para ello. Luego conéctese a una base de datos pasando el nombre de la base de datos asqlite3.Database() construir.

El siguiente código de CoffeeScript muestra cómo conectarse a una base de datos existente. Si la base de datos no existe, se creará con el nombre de pilatest.db, abierto y finalmente se devolverá el objeto de la base de datos.

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

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

También podemos suministrar :memory:para crear una base de datos anónima en memoria y una cadena vacía para crear una base de datos anónima basada en disco, en lugar de test.db. Guarde el código anterior en un archivo con nombrecreate_db.coffeey ejecútelo como se muestra a continuación. Si la base de datos se crea correctamente, generará el siguiente mensaje:

c:\> coffee create_db.coffee
Successfully connected

Crear una tabla

Puede crear una tabla en la base de datos SQLite a través de CoffeeScript usando el run()función. Pase la consulta para crear una tabla a esta función en formato String.

El siguiente programa CoffeeScript se utilizará para crear una tabla en test.db base de datos -

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

los serialize()La función establece la base de datos en modo serializado. En este modo, siempre que se encuentre una devolución de llamada, se llamará de inmediato. Las consultas en esa devolución de llamada se ejecutan en serie. Pronto la función regresa. La base de datos se establecerá nuevamente en modo normal. Después de completar la transacción, debemos cerrar la conexión usandoclose() función.

Guarde el código anterior en un archivo con nombre create_table.coffeey ejecútelo como se muestra a continuación. Esto creará una tabla llamadaSTUDENTen la base de datos test.db mostrando los siguientes mensajes.

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

Insertar / crear datos

Puede insertar datos en la base de datos SQLite a través del código CoffeeScript ejecutando la instrucción de inserción. Para hacerlo podemos usar elprepare() función que prepara sentencias SQL.

También acepta consultas con variables de enlace (?), los valores a estas variables se pueden adjuntar usando run()función. Puede insertar varios registros utilizando la declaración preparada y, después de insertar todos los registros, debe finalizar la declaración preparada utilizandofinalize() función.

El siguiente programa CoffeeScript muestra cómo insertar registros en la tabla denominada ESTUDIANTE creada en el ejemplo 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()

Guarde el código anterior en un archivo con nombre insert_data.coffeey ejecútelo como se muestra a continuación. Esto llenará la tabla llamada ESTUDIANTE mostrando los siguientes mensajes.

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

Leer / recuperar datos

Puede obtener los datos de una tabla SQLite usando el each()función. Esta función acepta una función de devolución de llamada opcional que se llamará en cada fila.

El siguiente programa CoffeeScript muestra cómo podemos buscar y mostrar registros de la tabla llamada ESTUDIANTE creada en el ejemplo 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()

Guarde el código anterior en un archivo con nombre retrive_data.coffeey ejecútelo como se muestra a continuación. Esto recupera todos los registros de la tabla denominada ESTUDIANTE y se muestra en la consola de la siguiente manera.

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

Actualización de datos

El siguiente código de CoffeeScript muestra cómo podemos usar la instrucción UPDATE para actualizar cualquier registro y luego buscar y mostrar registros actualizados en la tabla llamada ESTUDIANTE

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

Guarde el código anterior en un archivo con nombre update_data.coffeey ejecútelo como se muestra a continuación. Esto actualiza la ciudad del estudiante llamado Ram y muestra todos los registros en la tabla después de la operación de actualización de la siguiente manera.

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

Eliminar datos

El siguiente código de CoffeeScript muestra cómo podemos usar la instrucción DELETE para eliminar cualquier registro y luego buscar y mostrar los registros restantes de la tabla llamada ESTUDIANTE.

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

Guarde el código anterior en un archivo con nombre delete_data.coffeey ejecútelo como se muestra a continuación. Elimina el registro del estudiante llamado Ram y muestra todo lo que queda en la tabla después de la operación de eliminación de la siguiente manera.

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