SQLite是一种基于模式的轻量级关系数据库引擎.它是用于Web浏览器中本地存储的嵌入式数据库软件的一种流行选择.
与许多其他数据库管理系统不同,SQLite不是客户端 - 服务器数据库引擎.有关更多信息,请阅读我们的 SQLite教程
在本章中,您将学习如何与使用CoffeeScript的SQLite数据库.
可以使用 node-sqlite3 模块将SQLite3数据库与CoffeeScript集成.此模块适用于Node.js v0.10.x,v0.12.x,v4.x和v5.x.该模块提供了各种功能,可以使用CoffeeScript与SQLite3进行通信,此外还提供了一个简单的查询和参数绑定接口,以及一个查询序列化API.
您可以安装节点 - 使用npm的sqlite3模块如下所示.
npm install sqlite3
要使用sqlite3模块,必须首先创建一个表示数据库的连接对象,该对象将帮助您执行所有SQL语句.
为了连接到SQLite数据库,首先通过调用 node-sqlite3 模块的 require()函数创建其包,并传递字符串 sqlite3 作为参数.然后通过将数据库的名称传递给 sqlite3.Database()构造来连接到数据库.
以下CoffeeScript代码显示如何连接到现有数据库.如果数据库不存在,那么它将使用给定名称 test.db 创建,打开,最后将返回数据库对象.
#Creating sqlite3 package sqlite3 = require('sqlite3') #Creating a Database instance db = new (sqlite3.Database)('test.db') console.log "Database opened successfully."
我们还可以提供:memory:来创建一个匿名的内存数据库,并创建一个空字符串来创建匿名磁盘 - 基于数据库,而不是test.db.将上述代码保存在名为 create_db.coffee 的文件中,然后按如下所示执行.如果数据库成功创建,那么它将产生以下消息 :
c:\> coffee create_db.coffee Successfully connected
您可以在SQLite数据库中创建表通过CoffeeScript使用 run()函数.传递查询以字符串格式为此函数创建表.
以下CoffeeScript程序将用于在以前的 test.db 数据库中创建一个表 : ;
#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()
serialize()函数将数据库设置为序列化模式.在此模式下,当遇到回调时,将立即调用它.该回调中的查询是串行执行的.很快函数返回数据库将再次设置为正常模式.完成交易后,我们需要使用 close()函数关闭连接.
将上述代码保存在名称为 create_table.coffee
C:\> coffee create_table.coffee Successfully connected Table created successfully
您可以通过执行insert语句通过CoffeeScript代码将数据插入SQLite数据库.为此,我们可以使用 prepare()函数来准备SQL语句.
它还接受带有绑定变量的查询(? ),可以使用 run()函数附加这些变量的值.您可以使用预准备语句插入多个记录,并在插入所有记录后,您需要使用 finalize()函数完成预准备语句.
以下CoffeeScript程序显示了如何在上一个例子中创建的名为STUDENT的表中插入记录.
#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()
将上述代码保存在名为 insert_data.coffee 的文件中并执行它,如下所示.这将填充名为STUDENT的表,显示以下消息.
C:\> coffee insert_data.coffee Successfully connected Data inserted successfully
您可以使用 each()函数从SQLite表中获取数据.此函数接受一个可选的回调函数,该函数将在每一行上调用.
以下CoffeeScript程序显示了我们如何从上一个示例中创建的名为STUDENT的表中获取和显示记录
#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()
将上述代码保存在名为 retrive_data.coffee 的文件中,并按如下所示执行.这将检索名为STUDENT的表中的所有记录,并在控制台上显示如下.
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
以下CoffeeScript代码显示了我们如何使用UPDATE语句进行更新任何记录然后在名为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()
将上述代码保存在名为 update_data.coffee 的文件中,然后按如下所示执行.这将更新名为Ram的学生的城市,并在更新操作后显示表格中的所有记录,如下所示.
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
以下CoffeeScript代码显示了我们如何使用DELETE删除任何记录的语句,然后从名为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()
将上述代码保存在名为 delete_data.coffee 的文件中,然后按如下所示执行.它删除名为Ram的学生的记录,并在删除操作后显示表中的所有剩余部分.
Successfully connected Record deleted The contents of the table STUDENT after delete operation are :: 2: Robert, Mumbai 3: Rahim, Bangalore