文章目录

  • 前言
  • 一、准备工作
  • 二、使用步骤
  • 1.安装sqlite3
  • 2. 如何在项目中使用DB
  • 1. 创建后缀为 .db 文件
  • 2. 使用db文件
  • 3. knex.js使用
  • 4. 项目总使用
  • 3. 使用
  • 总结



前言

提示:本人前端妹子一枚,第一次使用sqlite3作为项目的数据储存,不对的请多指教

sqlite是一个轻型,嵌入式的SQL的数据库引擎,起特点是自给自足,无服务器,领配置,支持事务。大部分的桌面应用都用sqlite在客户端保存数据

一、准备工作

  1. 准备好sqlitestudio建库建表
  2. 建立连接应用
  3. 下载地址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 工具中 ,连接上,这样你就可以建表了

electron 连接mysql数据库 electron用什么数据库_sqlite


electron 连接mysql数据库 electron用什么数据库_数据库_02

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的方式。
后面经过查资料,问问后端的人员,才知道是不需要,是我按照前端的思维来想问题。

总之,感谢帮助过我的人,希望我这篇文章 也可以帮助他人,以上。