Nodejs 连接Sqlite3数据库手摸手教程

2023-11-10 07:30

本文主要是介绍Nodejs 连接Sqlite3数据库手摸手教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Nodejs 连接Sqlite3数据库手摸手教程

  • 记录基于WIN10 x64环境下安装Nodejs 操作Sqlite3
    • 下载安装
    • 功能快捷键nodejs环境下安装Sqlite3接口驱动
    • 测试
    • 代码:
    • 测试结果
    • SQLite3 API介绍

记录基于WIN10 x64环境下安装Nodejs 操作Sqlite3

不基于服务器方式嵌入到本地运行的文件型数据库,本文选择**SQlite **用于嵌入开发。

下载安装

进入官网下载对应文件包
在这里插入图片描述
解压安装在本地,sqlite3.def和dll,exe放置在通一文件夹内
在这里插入图片描述
设置系统环境变量path中加入sqlite3.exe启动地址
在本文件夹内导航栏执行CMD命令 ,键入sqite3
在这里插入图片描述
那么恭喜你sqite3 数据库安装完成

功能快捷键nodejs环境下安装Sqlite3接口驱动

"sqlite3": "^5.0.0",
在cmd命令行对应文件目录执行
npm init -y
我用npm没有安装成功改用淘宝镜像
cnpm install sqlite3 --save安装命令

测试

新建一个表
用可视化工具链接本地数据库,如图所示构建数据库名称+表+字段

代码:

**const sqlite3 = require("sqlite3").verbose()
// sqlites数据库地址
let sqliteDbPath = "user.db"
// 打开sqlites数据库
var db = new sqlite3.Database(sqliteDbPath)
// all查询所有数据
console.time('time a');
db.all(`select * from user`, function(err, row) {if (err) throw errelse {console.log(' ①all查询结果 ', row)console.log('转换JSON',JSON.stringify(row));//all所有的内容转成 JSON内容}
})
console.timeEnd('time a');
// each逐条查询数据,每一段会单独打印
db.each("select * from user", function(err, row) {if (err) throw errelse {console.log(' ②each查询结果:', row)}
})// 按条件查询
db.each("select * from user where username=?", 'miao', function(err, row) {//user 表头 username 数据库字段if (err) throw errelse {console.log(' ③按条件查询 ', row)}
})
// // // 增加一条数据
// var sql_add = db.prepare(`insert into user (username, password, email) values('buding', '1111', '221@sdsd.com')`)
// sql_add.run()
// console.log(sql_add)
// // 删除数据
// var sql_del = db.prepare(`delete from user where username='buding'`)
// sql_del.run()
// // 修改一条数据
// var sql_modify = db.prepare(`update user set username='buding' where id=1`)
// sql_modify.run()**

测试结果

PS E:\myapp\sqlite> node test04.js
time a: 1.744ms①all查询结果  [{id: 2,username: 'zhangshan',password: '123456',email: '40277738@123.com'},{id: 1,username: 'miao',password: '123456',email: '40277738@123.com'}
]
转换JSON [{"id":2,"username":"zhangshan","password":"123456","email":"40277738@123.com"},{"id":1,"username":"miao","password":"123456","email":"40277738@123.com"}]②each查询结果: {id: 2,username: 'zhangshan',password: '123456',email: '40277738@123.com'
}②each查询结果: {id: 1,username: 'miao',password: '123456',email: '40277738@123.com'
}③按条件查询  {id: 1,username: 'miao',password: '123456',email: '40277738@123.com'
}

2条数据查询时间小于2ms,没有大规模测试,本文基于固态硬盘测试的结果。

SQLite3 API介绍

在nodejs的模块安装模块下,进入sqlite3/lib目录下,打开sqlite3.js文件查看,操作数据库主要是用Database,Database相关的函数有:run、prepare、each、get、all、exec、map和close。

Database

用法:new sqlite3.Database(filename,[mode],[callback])。
功能:返回数据库对象并且自动打开和连接数据库,它没有独立打开数据库的方法。
close

用法:close([callback])。
功能:关闭和释放数据库对象。
run

用法:run(sql,param,…],[callback])。
功能:运行指定参数的SQL语句,完成之后调用回调函数,它不返回任何数据,在回调函数里面有一个参数,SQL语句执行成功,则参数的值为null,反之为一个错误的对象,它返回的是数据库的操作对象。在这个回调函数里面当中的this,里面包含有lastId(插入的ID)和change(操作影响的行数,如果执行SQL语句失败,则change的值永远为0)。
get

用法:get(sql,[param,…],[callback])。
功能:运行指定参数的SQL语句,完成过后调用回调函数。如果执行成功,则回调函数中的第一个参数为null,第二个参数为结果集中的第一行数据,反之则回调函数中只有一个参数,只参数为一个错误的对象。
all

用法:all(sql,[param,…],[callback])。
功能:运行指定参数的SQL语句,完成过后调用回调函数。如果执行成功,则回调函数中的第一个参数为null,第二个参数为查询的结果集,反之,则只有一个参数,且参数的值为一个错误的对象。
prepare

用法:prepare(sql,[param,…],[callback])。
功能:预执行绑定指定参数的SQL语句,返回一个Statement对象,如果执行成功,则回调函数的第一个参数为null,反之为一个错误的对象。
在这里插入图片描述

这篇关于Nodejs 连接Sqlite3数据库手摸手教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/381235

相关文章

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3