IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> koa2+better-sqlite3实现增删改查 -> 正文阅读

[大数据]koa2+better-sqlite3实现增删改查

目录

查询所有记录

?查询第一条记录

条件查询

模糊查询

新增记录

?修改记录

?删除记录

?创建表


sqlite3入门:sqlite3入门_~疆的博客-CSDN博客参考:SQLite 教程 | 菜鸟教程https://www.runoob.com/sqlite/sqlite-tutorial.html查看本地是否已安装sqlite3,出现以下界面表示 sqlite3已安装 右键新建一个lj_sqlite3.txt文件,将txt后缀改为db,一个sqlite3数据库就建好了,数据库名即为lj_sqlite3,如下: 参考:koa2+better-sqlite3实现增删改查_~疆的博客-CSDN博客koa2中安装better-sqlite3https://blog.csdhttps://blog.csdn.net/qq_40323256/article/details/125508731?搭建koa2脚手架:

koa-generator搭建koa2项目_~疆的博客-CSDN博客1、全局安装koa-generatorcnpm i -g koa-generator2、创建koa项目,并默认使用ejs引擎koa2 -e server这样就在当前文件夹中建立了一个名为server的文件夹,其内容如下3、安装依赖打开dos窗口,并进入到server文件夹,执行以下命令安装依赖cnpm i 4、启动项目使用npm start 启动项目,但是这个命令只能启动一次,每次更改代码后又要使用命令重启服务,比较繁琐,因此,为了使代码修改刷新页面能看到.https://blog.csdn.net/qq_40323256/article/details/109256624

better-sqlite3中的对象有两类,一个是Database类,一个是Statement类,Database对象可以实现数据库的连接和基本操作,Database.prepare()用于生成Statement对象,Statement对象是对SQL语句的封装,方便执行固定的语句。

?koa2中安装better-sqlite3

cnpm i -S better-sqlite3

在脚手架根目录新建db_sqlite3.js和mySqlite3.db?

?db_sqlite3.js:

const Database = require("better-sqlite3")
const db = new Database('mySqlite3.db', { verbose: console.log })

module.exports = db

users.js:

const router = require('koa-router')()

const db = require('../db_sqlite3.js')

router.prefix('/users')

router.get('/', function (ctx, next) {
  const stmt = db.prepare('select * from users');
  let row = stmt.all()//返回全部记录
  ctx.body = { data: row }
})

module.exports = router

??注意:此时访问/users接口将会报以下错误,因为此时mySqlite3.db是一个空数据库,还没有表

?在navicate中建一张users表:

?此时,再次访问接口:http://localhost:3000/users

?

查询所有记录

//查询所有记录
router.get('/', function (ctx, next) {
  const stmt = db.prepare('select * from users');
  let row = stmt.all()//返回全部记录
  ctx.body = { data: row }
})

?查询第一条记录

router.get('/', function (ctx, next) {
  const stmt = db.prepare('select * from users');
  let row = stmt.get()//返回第一条记录
  ctx.body = { data: row }
})

条件查询

以?占位。需要严格按照顺序来传参

单条件查询:

router.get('/', function (ctx, next) {
  const stmt = db.prepare('select * from users where username = ?');
  let row = stmt.get('李四')
  ctx.body = { data: row }
})

多条件查询?

router.get('/', function (ctx, next) {
  const stmt = db.prepare('select * from users where username = ? and password = ?');
  let row = stmt.get('李四', "4444")
  ctx.body = { data: row }
})

?

?以@占位。参数放在对象里面,顺序不重要

router.get('/', function (ctx, next) {
  const stmt = db.prepare('select * from users where username = @username and password = @password');
  let row = stmt.get({ password: "555", username: "王五" })
  ctx.body = { data: row }
})

模糊查询

注意双引号一定要在外面

//模糊查询。注意双引号一定要在外面
router.get('/', function (ctx, next) {
  const stmt = db.prepare("select * from users where username like '%四%'");
  let row = stmt.all()
  ctx.body = { data: row }
})

新增记录

新增1条记录:

router.get('/', function (ctx, next) {
  const stmt = db.prepare("insert into users(username,password) values (@username,@password)");
  let row = stmt.run({ username: "赵六", password: "666" })
  ctx.body = { data: row }
})

?新增多条记录:

router.get('/', function (ctx, next) {
  const stmt = db.prepare("insert into users(username,password) values (@username,@password)");

  //创建批量插入过程
  const insertMany = db.transaction((users) => {
    for (const user of users) {
      stmt.run(user)
    };
  });

  //执行批量插入语句
  let row = insertMany([
    { username: '钱七', password: "777" },
    { username: '孙八', password: "888" },
    { username: '李九', password: "999" },
  ]);

  ctx.body = { data: row }
})

?修改记录

router.get('/', function (ctx, next) {
  const stmt = db.prepare("update users set username = @username, password = @password where id =@id");
  let row = stmt.run({ id: 1, username: "张三三", password: "3333" })
  ctx.body = { data: row }
})

?删除记录

router.get('/', function (ctx, next) {
  const stmt = db.prepare("delete from users where username=?");
  let row = stmt.run('李四')
  ctx.body = { data: row }
})

?创建表

router.get('/', function (ctx, next) {
  const create_table_users =
    `create table users
     (
         id         INTEGER    PRIMARY KEY   AUTOINCREMENT,
         username   CHAR(50)   NOT NULL,
         password   CHAR(50)
     );`

  let result = db.exec(create_table_users)//执行sql命令
  ctx.body = { data: result }
})

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:08:56  更:2022-06-29 19:10:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/24 9:39:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码