文章目录
- 前言
- 一、准备工作
- 二、使用步骤
- 1.安装sqlite3
- 2. 如何在项目中使用DB
- 1. 创建后缀为 .db 文件
- 2. 使用db文件
- 3. knex.js使用
- 4. 项目总使用
- 3. 使用
- 总结
前言
提示:本人前端妹子一枚,第一次使用sqlite3作为项目的数据储存,不对的请多指教
sqlite是一个轻型,嵌入式的SQL的数据库引擎,起特点是自给自足,无服务器,领配置,支持事务。大部分的桌面应用都用sqlite在客户端保存数据
一、准备工作
- 准备好sqlitestudio建库建表
- 建立连接应用
- 下载地址sqlitestudio
二、使用步骤
1.安装sqlite3
npm install sqlite3 --build-from-source --runtime=electron --target=12.0.5 --dist-url=https://atom.io/download/electron
//以上命令来自node-sqlite3网,此处需要注意,--arget-8.11是写作此案例时使目的Electron版本,读者需把其更改你使用的lectron版本号。
node-sqlite3库只对QLite3单封装,为了完成数据的CRUD操需编
再次包装,完成业务数据访问读写工作。 写传统的SQL语句,开发效率低下。这里推荐大家使用knexjs作为对node-sqlite3的
knexjs是一个SQL指令构建器,开发者可以使用它编写串行化的数据访问代码,它会把开发者编写的代码转换成 QL句,再交由数据库执行处理。数据库返回的数据,它也会格式化成JSON对象。它支持多种数据库,比如 Postgres、MSSQL dySQL、MariaDB、SQLite3、Oracle等,这里我们只用到了 SQLite3。knexjs也是业知名的数据库访问工具
2. 如何在项目中使用DB
1. 创建后缀为 .db 文件
创建文本文件,更改.db后缀,再拖拽到 sqlitestudio 工具中 ,连接上,这样你就可以建表了
2. 使用db文件
knexjs官方文档:https://knexjs.org/guide/raw.html#raw-parameter-binding
将db文件放入到项目中
//连接项目
let sqliteDbPath = './DB.db'
const knex = require('knex')({
client: 'sqlite3',
useNullAsDefault: true,
connection: {
filename: sqliteDbPath
},
})
//如果项目中 DB.db 不存在 就创建文件,创建ip表
if (!fs.existsSync(sqliteDbPath)) {
knex();
knex.schema
.raw('CREATE TABLE ip(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT NOT NULL DEFAULT (\'\')')
.then(() => {
})
.catch((err: any) => {
console.log(err)
})
}else{
//判断ip表中是否有topIndex字段,没有该字段就填加
knex.schema.hasColumn("ip", "topIndex")
.then((result:boolean)=>{
//result=false 没有
//result=true有
!result&&knex.schema.raw("ALTER TABLE projectIp ADD topIndex INT (2) NOT NULL DEFAULT (0)").then(()=>{})
})
}
3. knex.js使用
//安装 knex.js
npm install knex
CRUD操作样例代码,下方代码使用await关键字,所以使用时应放在async标记的函才能正常执行。
//sql 语句操作
await knex.raw(`insert into ip(name) values('大白兔')`);
//查找
await knex('admins').where({id:0}));
//排序
await knex('users').orderBy('name', 'desc')
//更新
await knex('admins').where("id", 0).update(password: 'test'));
//删除
await knex('addresses').whereIn("id",[0,1,21).del();
//分页
await knex('addresses').limit(10).offset((1 - 1) * 10)
//添加
await knex('ip').insert({name:'大白兔'})
4. 项目总使用
我不太会写SQL语句 ,想要进一步学习自行百度
例如:
/***
*数据表:ip
* 功能:添加ip
* value { object } ip的名称 和 备注
* */
export const addIpApi = async (value: any) => {
return new Promise(function (resolve, reject) {
//支持sql语句
//knex.raw(`insert into ip(name) values('大白兔')`);
knex('ip')
.insert({...singParams})
.then((row: any) => {
resolve({
code: 200,
msg: '新增成功'
})
})
.catch((err: any) => {
reject({
code: 401,
msg: err
})
})
})
}
3. 使用
import { addIpApi } from "./tools";
addIpApi ({name:"大白兔"}).then((base: any) => {
//逻辑代码
})
总结
我刚接触到sqlite3的时候,不知道怎么下手 ,我以为是node创建服务,再启动服务,然后前端调用API的方式。
后面经过查资料,问问后端的人员,才知道是不需要,是我按照前端的思维来想问题。
总之,感谢帮助过我的人,希望我这篇文章 也可以帮助他人,以上。