Node.js使用SQLite数据库方法大全

 更新时间:2023年10月21日 10:16:10   投稿:yin  
Node.js是一种流行的JavaScript运行时,提供了许多有用的模块和库来构建Web应用程序,而SQLite是一种嵌入式关系型数据库,它可以运行在各种操作系统上,包括Windows、Linux和Mac OS X等,在Node.js中,可以通过安装sqlite3模块来访问SQLite数据库

Node.js是一种流行的JavaScript运行时,提供了许多有用的模块和库来构建Web应用程序,而SQLite是一种嵌入式关系型数据库,它可以运行在各种操作系统上,包括Windows、Linux和Mac OS X等,在Node.js中,可以通过安装sqlite3模块来访问SQLite数据库。

SQLite 是一个单文件的离线关系型 SQL 数据库,它的文件都存储在一个 DB 数据文件中,相比 MySQL 这种数据库服务器来说,SQLite 更方便迁移,对于内存小的服务器来说,使用 SQLite 也是一个不错的选择。SQLite 也可以集成到桌面应用程序中,作为本地数据库使用。

Node.js快速入门

Node.js是什么

Node.js是一个基于Chrome V8引擎的JavaScript运行环境:即Node.js内置了Chrome的V8 引擎,可以在Node.js环境中直接运行JavaScript程序。Node.js脱离浏览器环境也可以运行JavaScript,只要有JavaScript引擎就可以。

通俗的说是一个专门用于为前端业务提供数据的后端程序

Node.js安装与下载

官网:Node.js(https://nodejs.org/en)

中文网:Node.js 中文网(https://nodejs.cn/)

安装完成之后,打开控制台输入node -v 查看安装node.js版本号

Node.js入门

使用前端开发工具 VSCode:

①在工作区新建一个文件夹NodeJS,创建文件01.js,在文件中编写

console.log("hello Node.js");

②右键点击创建的NodeJS文件夹,选择在终端中打开, 此时会出现一个控制台,在控制台输入node 01.js运行js文件。结果输出hello Node.js

③写一个简单的服务器端应用,创建文件02.js

//引入http模块
const http=require('http');
//创建服务器
http.createServer(function(request,response){
/* 
发送HTTP头
HTTP状态值:200:OK
内容类型:text/plain
 */    
response.writeHead(200,{'Content-Type':'text/html'});
//发送响应数据"Hello Node.js"
response.end('<h1>Hello Node.js</h1>');
}).listen(8888);//设置监听端口号8888
//终端打印
console.log('Server running at http://127.0.0.1:8888/');

在控制台输入node 02.js。用浏览器访问http://127.0.0.1:8888。就会得到响应的数据

SQLite快速入门

SQLite是什么

SQlite是一款非常轻型的数据库,体现在下面3个特点

体积小
免安装,无需配置
整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件

SQLite安装与下载

SQLite下载地址:SQLite Download Page(https://www.sqlite.org/download.html)

下载对应windows版本

下载完成解压安装在本地,sqlite3.def和dll,exe放置在通一文件夹内

ps:这里最好自己设置一下sqlite的环境变量,在系统环境变量path中加入sqlite3.exe启动地址

然后 CMD  输入:sqite3     查看一下是否配置成功环境变量

SQLite的使用

这里我们使用 SQLiteStudio作为可视化工具

 ①新建个数据库文件

随便起个名字,新建文件  命名 Test,后缀.db

②链接数据库文件

找到刚才创建的Test.db文件,给自己数据库起一个名字

先测试连接,成功以后点击OK

 这个时候就可以随便创建 数据表 新增字段了

 Node.js操作SQLite

首先在Node环境下安装SQLite

安装 sqlite3 模块

在操作 SQLite 之前还需要先安装 sqlite3 模块,用 npm 安装:

npm install sqlite3 --save-dev

如果在安装的时候出现如下的错误:

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 还是出错的话,可以通过 npm 安装 Python 2,如果用的是 Windows 的话可以通过管理员权限运行 Powershell ,输入:

npm install --global windows-build-tools

安装完 Python 后应该就可以安装 sqlite3 模块了。

打开数据库

下面打开一个 data.db 的数据库:

const sqlite3 = require('sqlite3');  // 引入 sqlite3 模块
const path = require('path');  // 引入路径处理模块
const dbName = path.join(__dirname, 'data.db');  // 获取当前运行目录下的 data.db 文件
// 打开数据库
const db = new sqlite3.Database(dbName, err => {
if (err !== null) console.log(err);  // 输出错误信息
});

sqlite3.Database 方法可以打开一个数据库,如果传入的 DB 数据库文件不存在就会创建一个,返回一个数据库对象。

如果要关闭打开的数据库可以使用 close 方法,如下:

db.close(err => {
if (err) console.log(err);
});

回调函数可以接收一个 err 也就是错误信息。

创建数据表

下面创建一张 user 数据表:

// SQL 语句
const sql = `
CREATE TABLE user (
id INTEGER PRIMARY KEY,
user_name VARCHAR (30) NOT NULL,
age TINYINT (3) NOT NULL DEFAULT 0
)
`;
// 创建表格
db.run(sql, function(err) {
if (err) console.log(err);  // 如果出现错误就输出错误信息
});

这里创建表使用的是 run 方法,run 方法可以执行 SQL 语句,通过回调函数可以获取受影响的行数。不过创建表格是无法获取影响的行数的,只有在 增、删、改 的时候才能获取影响的行数。

添加数据

下面给 user 表添加一条数据:

db.run('INSERT INTO user (user_name, age) VALUES (?, ?)', ['Mark', 28], function(err) {
if (err) console.log(err);  // 如果有错误就输出错误信息
console.log(this.changes);  // 输出受影响的行数
console.log(this.lastID);  // 输出 lastID
});

run 方法可以用于插入、更新、删除 数据,第一个参数的 SQL 语句中包含一些 ?,这个 ? 就是占位符,第二个数组内的内容会替换占位符。上面的 SQL 语句执行的时候如下:

INSERT INTO user (user_name, age) VALUES ('Mark', 28)

第三个参数是一个回调函数,语句执行完成后会执行回调函数,函数的 err 参数可以获取错误信息,函数的 this.changes 可以获取受影响的行数,this.lastID 可以获取 lastID 。

修改数据

修改数据还是用 run 方法,如下:

db.run('UPDATE user SET user_name = $newName WHERE user_name = $userName', {
$userName: 'Mark',
$newName: 'Jack'
}, function(err) {
if (err) console.log(err);  // 如果有错误就输出错误信息
console.log(this.changes);  // 输出受影响的行数
console.log(this.lastID);  // 输出 lastID
});

这里第二个参数是一个对象,对象的值会替换 SQL 语句中和属性名相同的占位符,上面的语句执行的时候如下:

UPDATE user SET user_name = 'Jack' WHERE user_name = 'Mark'

查询数据

删除数据还是用 run 方法,和上面差不多,只是 SQL 语句不一样,这里就不写了。

查询用的表内容如下:

iduser_nameage
1Alice30
2Steve26

下面查询出上面表格中的所有内容:

db.all('SELECT id, user_name, age FROM user', (err, rows) => {
if (err) console.log(err);  // 如果出现错误就输出错误信息
console.log(rows);  // 输出查询结果
});

查询出的结果如下:

[
{ id: 1, user_name: 'Alice', age: 30 },
{ id: 2, user_name: 'Steve', age: 26 }
]

下面只查询 user_name 为 Steve 的数据:

db.all('SELECT id, user_name, age FROM user WHERE user_name = ?', ['Steve'], (err, rows) => {
if (err) console.log(err);  // 如果出现错误就输出错误信息
console.log(rows);  // 输出查询结果
});

这里的占位符还是和上面的一样。

all 方法可以查询多条数据,第一个参数就是 SQL 语句,后面的参数可以是用来替换占位符的内容,也可以是回调函数,回调函数需要放在最后。回调函数可以接收 err 和 rows 两个参数,err 就是错误信息,rows 是查询结果的数组,如果没有查询出内容 rows 就是一个空数组。

如果你只需要查询一条数据,也就是查询出的数据不会超过一条的话,可以考虑使用 get 方法,get 方法只会查询一条数据,如下:

db.get('SELECT id, user_name, age FROM user', (err, row) => {
if (err) console.log(err);
console.log(row);
});

查询结果如下:

{ id: 1, user_name: 'Alice', age: 30 }

虽然上面的表格中有两条数据,但 get 方法只查询出一条。

get 方法的参数和 all 差不多,第一个参数是 SQL 语句,后面的参数可以是用来替换 SQL 中的占位符的内容,也可以是一个回调函数,回调函数需要在最后。函数可以接收 err 和 row ,err 是错误信息,row 是查询结果,如果没有查询出数据 row 就是 undefined 。

总结

到此这篇关于Node.js使用SQLite数据库方法大全的文章就介绍到这了,更多相关Node.js操作SQLite内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • npm报错:request to httpsregistry.npm.taobao.org failed, reason certificate has expired的解决方案

    npm报错:request to httpsregistry.npm.taobao.org 

    这篇文章主要介绍了npm报错:request to httpsregistry.npm.taobao.org failed, reason certificate has expired的解决方案,文中有详细的解决方案,需要的朋友可以参考下
    2024-03-03
  • node.js cookie-parser之parser.js

    node.js cookie-parser之parser.js

    这篇文章主要介绍node.js cookie-parser之parser.js,讲解的比较详细,需要的朋友可以参考下。
    2016-06-06
  • Node批量爬取头条视频并保存方法

    Node批量爬取头条视频并保存方法

    在本篇文章中我们给大家介绍了node爬取头条里面的视频,并进行批量保存的方法,有需要的朋友可以测试以下。
    2018-09-09
  • Node.js使用http模块实现后台服务器流程解析

    Node.js使用http模块实现后台服务器流程解析

    这篇文章将会教会你前端工程师怎么搭建后台服务器,做自己的后端开发,同时,在这篇文章开始你就开始正式进入全栈的道路咯!本片文章将细解http模块,在开始前我们将复习一点计算机网络的知识
    2022-09-09
  • 如何利用node.js开发一个生成逐帧动画的小工具

    如何利用node.js开发一个生成逐帧动画的小工具

    这篇文章主要给大家介绍了关于如何利用node.js开发一个生成逐帧动画小工具的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用node.js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • nodeJs实现基于连接池连接mysql的方法示例

    nodeJs实现基于连接池连接mysql的方法示例

    这篇文章主要介绍了nodeJs实现基于连接池连接mysql的方法,结合具体实例形式分析了nodejs连接池操作mysql数据库连接的实现与使用技巧,需要的朋友可以参考下
    2018-02-02
  • 详解Nodejs之npm&package.json

    详解Nodejs之npm&package.json

    本篇文章主要介绍了详解Nodejs之npm&package.json,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Node.js中如何合并两个复杂对象详解

    Node.js中如何合并两个复杂对象详解

    下面这篇文章主要给大家介绍了在Node.js中如何合并两个复杂对象的方法,文中给出了详细的示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友可以参考,下面来一起看看吧。
    2016-12-12
  • node.js使用 http-proxy 创建代理服务器操作示例

    node.js使用 http-proxy 创建代理服务器操作示例

    这篇文章主要介绍了node.js使用 http-proxy 创建代理服务器,结合实例形式分析了node.js使用 http-proxy 创建代理服务器原理、具体步骤与相关注意事项,需要的朋友可以参考下
    2020-02-02
  • nodejs与浏览器中全局对象区别点总结

    nodejs与浏览器中全局对象区别点总结

    在本篇文章里小编给大家整理的是一篇关于nodejs与浏览器中全局对象区别点总结内容,对此有需要的朋友们可以学习下。
    2021-12-12

最新评论