Node.js使用SQLite數(shù)據(jù)庫方法大全
Node.js是一種流行的JavaScript運(yùn)行時(shí),提供了許多有用的模塊和庫來構(gòu)建Web應(yīng)用程序,而SQLite是一種嵌入式關(guān)系型數(shù)據(jù)庫,它可以運(yùn)行在各種操作系統(tǒng)上,包括Windows、Linux和Mac OS X等,在Node.js中,可以通過安裝sqlite3模塊來訪問SQLite數(shù)據(jù)庫。
SQLite 是一個(gè)單文件的離線關(guān)系型 SQL 數(shù)據(jù)庫,它的文件都存儲(chǔ)在一個(gè) DB 數(shù)據(jù)文件中,相比 MySQL 這種數(shù)據(jù)庫服務(wù)器來說,SQLite 更方便遷移,對(duì)于內(nèi)存小的服務(wù)器來說,使用 SQLite 也是一個(gè)不錯(cuò)的選擇。SQLite 也可以集成到桌面應(yīng)用程序中,作為本地?cái)?shù)據(jù)庫使用。
Node.js快速入門
Node.js是什么
Node.js是一個(gè)基于Chrome V8引擎的JavaScript運(yùn)行環(huán)境:即Node.js內(nèi)置了Chrome的V8 引擎,可以在Node.js環(huán)境中直接運(yùn)行JavaScript程序。Node.js脫離瀏覽器環(huán)境也可以運(yùn)行JavaScript,只要有JavaScript引擎就可以。
通俗的說是一個(gè)專門用于為前端業(yè)務(wù)提供數(shù)據(jù)的后端程序
Node.js安裝與下載
官網(wǎng):Node.js(https://nodejs.org/en)
中文網(wǎng):Node.js 中文網(wǎng)(https://nodejs.cn/)
安裝完成之后,打開控制臺(tái)輸入node -v 查看安裝node.js版本號(hào)
Node.js入門
使用前端開發(fā)工具 VSCode:
①在工作區(qū)新建一個(gè)文件夾NodeJS,創(chuàng)建文件01.js,在文件中編寫
console.log("hello Node.js");②右鍵點(diǎn)擊創(chuàng)建的NodeJS文件夾,選擇在終端中打開, 此時(shí)會(huì)出現(xiàn)一個(gè)控制臺(tái),在控制臺(tái)輸入node 01.js運(yùn)行js文件。結(jié)果輸出hello Node.js
③寫一個(gè)簡單的服務(wù)器端應(yīng)用,創(chuàng)建文件02.js
//引入http模塊
const http=require('http');
//創(chuàng)建服務(wù)器
http.createServer(function(request,response){
/*
發(fā)送HTTP頭
HTTP狀態(tài)值:200:OK
內(nèi)容類型:text/plain
*/
response.writeHead(200,{'Content-Type':'text/html'});
//發(fā)送響應(yīng)數(shù)據(jù)"Hello Node.js"
response.end('<h1>Hello Node.js</h1>');
}).listen(8888);//設(shè)置監(jiān)聽端口號(hào)8888
//終端打印
console.log('Server running at http://127.0.0.1:8888/');在控制臺(tái)輸入node 02.js。用瀏覽器訪問http://127.0.0.1:8888。就會(huì)得到響應(yīng)的數(shù)據(jù)
SQLite快速入門
SQLite是什么
SQlite是一款非常輕型的數(shù)據(jù)庫,體現(xiàn)在下面3個(gè)特點(diǎn)
體積小
免安裝,無需配置
整個(gè)數(shù)據(jù)庫(定義、表、索引和數(shù)據(jù)本身)都在宿主主機(jī)上存儲(chǔ)在一個(gè)單一的文件
SQLite安裝與下載
SQLite下載地址:SQLite Download Page(https://www.sqlite.org/download.html)
下載對(duì)應(yīng)windows版本
下載完成解壓安裝在本地,sqlite3.def和dll,exe放置在通一文件夾內(nèi)
ps:這里最好自己設(shè)置一下sqlite的環(huán)境變量,在系統(tǒng)環(huán)境變量path中加入sqlite3.exe啟動(dòng)地址
然后 CMD 輸入:sqite3 查看一下是否配置成功環(huán)境變量
SQLite的使用
這里我們使用 SQLiteStudio作為可視化工具
①新建個(gè)數(shù)據(jù)庫文件
隨便起個(gè)名字,新建文件 命名 Test,后綴.db
②鏈接數(shù)據(jù)庫文件
找到剛才創(chuàng)建的Test.db文件,給自己數(shù)據(jù)庫起一個(gè)名字
先測試連接,成功以后點(diǎn)擊OK
這個(gè)時(shí)候就可以隨便創(chuàng)建 數(shù)據(jù)表 新增字段了
Node.js操作SQLite
首先在Node環(huán)境下安裝SQLite
安裝 sqlite3 模塊
在操作 SQLite 之前還需要先安裝 sqlite3 模塊,用 npm 安裝:
npm install sqlite3 --save-dev
如果在安裝的時(shí)候出現(xiàn)如下的錯(cuò)誤:
gyp ERR! find Python Python is not set from command line or npm configuration gyp ERR! find Python Python is not set from environment variable PYTHON gyp ERR! find Python checking if "python" can be used gyp ERR! find Python - "python" is not in PATH or produced an error gyp ERR! find Python checking if "python2" can be used gyp ERR! find Python - "python2" is not in PATH or produced an error gyp ERR! find Python checking if "python3" can be used gyp ERR! find Python - "python3" is not in PATH or produced an error
SQLite 模塊的編譯需要用到 Python,可以下載 Python 安裝。
如果安裝了最新版的 Python 還是出錯(cuò)的話,可以通過 npm 安裝 Python 2,如果用的是 Windows 的話可以通過管理員權(quán)限運(yùn)行 Powershell ,輸入:
npm install --global windows-build-tools
安裝完 Python 后應(yīng)該就可以安裝 sqlite3 模塊了。
打開數(shù)據(jù)庫
下面打開一個(gè) data.db 的數(shù)據(jù)庫:
const sqlite3 = require('sqlite3'); // 引入 sqlite3 模塊
const path = require('path'); // 引入路徑處理模塊
const dbName = path.join(__dirname, 'data.db'); // 獲取當(dāng)前運(yùn)行目錄下的 data.db 文件
// 打開數(shù)據(jù)庫
const db = new sqlite3.Database(dbName, err => {
if (err !== null) console.log(err); // 輸出錯(cuò)誤信息
});sqlite3.Database 方法可以打開一個(gè)數(shù)據(jù)庫,如果傳入的 DB 數(shù)據(jù)庫文件不存在就會(huì)創(chuàng)建一個(gè),返回一個(gè)數(shù)據(jù)庫對(duì)象。
如果要關(guān)閉打開的數(shù)據(jù)庫可以使用 close 方法,如下:
db.close(err => {
if (err) console.log(err);
});回調(diào)函數(shù)可以接收一個(gè) err 也就是錯(cuò)誤信息。
創(chuàng)建數(shù)據(jù)表
下面創(chuàng)建一張 user 數(shù)據(jù)表:
// SQL 語句
const sql = `
CREATE TABLE user (
id INTEGER PRIMARY KEY,
user_name VARCHAR (30) NOT NULL,
age TINYINT (3) NOT NULL DEFAULT 0
)
`;
// 創(chuàng)建表格
db.run(sql, function(err) {
if (err) console.log(err); // 如果出現(xiàn)錯(cuò)誤就輸出錯(cuò)誤信息
});這里創(chuàng)建表使用的是 run 方法,run 方法可以執(zhí)行 SQL 語句,通過回調(diào)函數(shù)可以獲取受影響的行數(shù)。不過創(chuàng)建表格是無法獲取影響的行數(shù)的,只有在 增、刪、改 的時(shí)候才能獲取影響的行數(shù)。
添加數(shù)據(jù)
下面給 user 表添加一條數(shù)據(jù):
db.run('INSERT INTO user (user_name, age) VALUES (?, ?)', ['Mark', 28], function(err) {
if (err) console.log(err); // 如果有錯(cuò)誤就輸出錯(cuò)誤信息
console.log(this.changes); // 輸出受影響的行數(shù)
console.log(this.lastID); // 輸出 lastID
});run 方法可以用于插入、更新、刪除 數(shù)據(jù),第一個(gè)參數(shù)的 SQL 語句中包含一些 ?,這個(gè) ? 就是占位符,第二個(gè)數(shù)組內(nèi)的內(nèi)容會(huì)替換占位符。上面的 SQL 語句執(zhí)行的時(shí)候如下:
INSERT INTO user (user_name, age) VALUES ('Mark', 28)第三個(gè)參數(shù)是一個(gè)回調(diào)函數(shù),語句執(zhí)行完成后會(huì)執(zhí)行回調(diào)函數(shù),函數(shù)的 err 參數(shù)可以獲取錯(cuò)誤信息,函數(shù)的 this.changes 可以獲取受影響的行數(shù),this.lastID 可以獲取 lastID 。
修改數(shù)據(jù)
修改數(shù)據(jù)還是用 run 方法,如下:
db.run('UPDATE user SET user_name = $newName WHERE user_name = $userName', {
$userName: 'Mark',
$newName: 'Jack'
}, function(err) {
if (err) console.log(err); // 如果有錯(cuò)誤就輸出錯(cuò)誤信息
console.log(this.changes); // 輸出受影響的行數(shù)
console.log(this.lastID); // 輸出 lastID
});這里第二個(gè)參數(shù)是一個(gè)對(duì)象,對(duì)象的值會(huì)替換 SQL 語句中和屬性名相同的占位符,上面的語句執(zhí)行的時(shí)候如下:
UPDATE user SET user_name = 'Jack' WHERE user_name = 'Mark'
查詢數(shù)據(jù)
刪除數(shù)據(jù)還是用 run 方法,和上面差不多,只是 SQL 語句不一樣,這里就不寫了。
查詢用的表內(nèi)容如下:
| id | user_name | age |
|---|---|---|
| 1 | Alice | 30 |
| 2 | Steve | 26 |
下面查詢出上面表格中的所有內(nèi)容:
db.all('SELECT id, user_name, age FROM user', (err, rows) => {
if (err) console.log(err); // 如果出現(xiàn)錯(cuò)誤就輸出錯(cuò)誤信息
console.log(rows); // 輸出查詢結(jié)果
});查詢出的結(jié)果如下:
[
{ id: 1, user_name: 'Alice', age: 30 },
{ id: 2, user_name: 'Steve', age: 26 }
]下面只查詢 user_name 為 Steve 的數(shù)據(jù):
db.all('SELECT id, user_name, age FROM user WHERE user_name = ?', ['Steve'], (err, rows) => {
if (err) console.log(err); // 如果出現(xiàn)錯(cuò)誤就輸出錯(cuò)誤信息
console.log(rows); // 輸出查詢結(jié)果
});這里的占位符還是和上面的一樣。
all 方法可以查詢多條數(shù)據(jù),第一個(gè)參數(shù)就是 SQL 語句,后面的參數(shù)可以是用來替換占位符的內(nèi)容,也可以是回調(diào)函數(shù),回調(diào)函數(shù)需要放在最后?;卣{(diào)函數(shù)可以接收 err 和 rows 兩個(gè)參數(shù),err 就是錯(cuò)誤信息,rows 是查詢結(jié)果的數(shù)組,如果沒有查詢出內(nèi)容 rows 就是一個(gè)空數(shù)組。
如果你只需要查詢一條數(shù)據(jù),也就是查詢出的數(shù)據(jù)不會(huì)超過一條的話,可以考慮使用 get 方法,get 方法只會(huì)查詢一條數(shù)據(jù),如下:
db.get('SELECT id, user_name, age FROM user', (err, row) => {
if (err) console.log(err);
console.log(row);
});查詢結(jié)果如下:
{ id: 1, user_name: 'Alice', age: 30 }雖然上面的表格中有兩條數(shù)據(jù),但 get 方法只查詢出一條。
get 方法的參數(shù)和 all 差不多,第一個(gè)參數(shù)是 SQL 語句,后面的參數(shù)可以是用來替換 SQL 中的占位符的內(nèi)容,也可以是一個(gè)回調(diào)函數(shù),回調(diào)函數(shù)需要在最后。函數(shù)可以接收 err 和 row ,err 是錯(cuò)誤信息,row 是查詢結(jié)果,如果沒有查詢出數(shù)據(jù) row 就是 undefined 。
總結(jié)
到此這篇關(guān)于Node.js使用SQLite數(shù)據(jù)庫方法大全的文章就介紹到這了,更多相關(guān)Node.js操作SQLite內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Node轉(zhuǎn)換Excel成JSON的詳細(xì)步驟
最近工作中遇到一個(gè)需求,大致需求就是將Excel文件在導(dǎo)入時(shí)解析為json格式轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)再傳輸給后臺(tái),下面這篇文章主要給大家介紹了關(guān)于如何利用Node轉(zhuǎn)換Excel成JSON的詳細(xì)步驟,需要的朋友可以參考下2022-11-11
ajax +NodeJS 實(shí)現(xiàn)圖片上傳實(shí)例
本篇文章主要介紹了ajax +NodeJS 實(shí)現(xiàn)圖片上傳實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
node.js中實(shí)現(xiàn)token的生成與驗(yàn)證的操作方法
Token是一種用于在客戶端和服務(wù)器之間安全傳輸信息的加密字符串,常用于身份驗(yàn)證、授權(quán)、狀態(tài)管理和安全性,在Node.js中,常用jsonwebtoken庫生成和驗(yàn)證Token,本文介紹node.js中實(shí)現(xiàn)token的生成與驗(yàn)證的操作方法,感興趣的朋友一起看看吧2025-01-01
nodejs實(shí)現(xiàn)遍歷文件夾并統(tǒng)計(jì)文件大小
這篇文章主要介紹了nodejs實(shí)現(xiàn)遍歷文件夾并統(tǒng)計(jì)文件大小,下面使用nodejs的遍歷文件夾文件內(nèi)容,并且讀取所有的文件,并采取排序往大到小的順序進(jìn)行輸出,需要的朋友可以參考下2015-05-05

