
- 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