- CoffeeScript 教程
- CoffeeScript - 首页
- CoffeeScript - 概述
- CoffeeScript - 环境
- CoffeeScript - 命令行工具
- CoffeeScript - 语法
- CoffeeScript - 数据类型
- CoffeeScript - 变量
- CoffeeScript - 运算符和别名
- CoffeeScript - 条件语句
- CoffeeScript - 循环
- CoffeeScript - 推导式
- CoffeeScript - 函数
- CoffeeScript 面向对象
- CoffeeScript - 字符串
- CoffeeScript - 数组
- CoffeeScript - 对象
- CoffeeScript - 范围
- CoffeeScript - 展开运算符
- CoffeeScript - 日期
- CoffeeScript - 数学
- CoffeeScript - 异常处理
- CoffeeScript - 正则表达式
- CoffeeScript - 类和继承
- CoffeeScript 高级
- CoffeeScript - Ajax
- CoffeeScript - jQuery
- CoffeeScript - MongoDB
- CoffeeScript - SQLite
- CoffeeScript 有用资源
- CoffeeScript - 快速指南
- CoffeeScript - 有用资源
- CoffeeScript - 讨论
CoffeeScript - SQLite
SQLite 是一款轻量级、基于模式的关系型数据库引擎。它作为 Web 浏览器本地存储的嵌入式数据库软件,非常受欢迎。
与许多其他数据库管理系统不同,SQLite 不是客户端-服务器数据库引擎。有关更多信息,请阅读我们的 SQLite 教程
在本章中,您将学习如何使用 CoffeeScript 与 SQLite 数据库进行通信。
安装
SQLite3 数据库可以使用 **node-sqlite3** 模块与 CoffeeScript 集成。此模块适用于 Node.js v0.10.x、v0.12.x、v4.x 和 v5.x。除了提供与 SQLite3 通信的各种功能外,此模块还提供了一个简单的查询和参数绑定接口,以及一个查询序列化 API。
您可以使用 npm 安装 node-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
创建表
您可以通过使用 **run()** 函数在 CoffeeScript 中创建 SQLite 数据库中的表。将创建表的查询作为字符串格式传递给此函数。
以下 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** 的文件中并执行它,如下所示。这将在数据库 test.db 中创建一个名为 **STUDENT** 的表,并显示以下消息。
C:\> coffee create_table.coffee Successfully connected Table created successfully
插入/创建数据
您可以通过执行插入语句在 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