第四章 Electron 使用SQLite3数据库

news2024/11/23 22:36:48

一、SQLite是什么 👇 👇 👇

SQLite是一种嵌入式关系型数据库管理系统,是一个零配置、无服务器的、自给自足的、事务性的SQL数据库引擎。SQLite是一个轻量级的数据库,可以在各种操作系统上使用,并且支持SQL语言标准。

二、SQLite可以做什么 👇 👇 👇

SQLite可以用来存储和管理大量的数据,并且可以通过SQL语句来查询和操作这些数据。它可以用于移动应用程序、桌面应用程序、Web应用程序、嵌入式系统等等。

三、为什么使用它 👇 👇 👇

轻量级:SQLite非常小巧,不需要额外的服务器或运行时环境,只需一个库文件即可。

高性能:SQLite是非常快速的,因为它是一个本地库,可以直接读写磁盘文件。

可移植性:SQLite可以在多种操作系统上运行,包括Windows、Linux、macOS等等。

安全性:SQLite支持数据加密和用户身份验证等安全特性。

易于使用:SQLite的API简单易用,可以通过多种编程语言进行访问。

四、安装依赖 👇 👇 👇

安装依赖的话记得要把项目停掉

我当前的node版本号

yarn add sqlite3 --build-from-source

# 如果执行上面的语句没有安装成功再执行下面的试试
# 如果都失败,多尝试几次就好

yarn add sqlite3 --ignore-scripts

我安装的sqlite3版本

五、创建数据库👇 👇 👇

1、编写数据启动脚本👇 👇 👇

新建文件electron/db/database.ts,在electron下创建db文件夹,随后在其文件夹下创建database.ts。里面我通过开发环境来判断应该存放的位置。因为我们项目打包以后和开发的文件夹路径是不一样的。示例中数据库的名字叫Etc.End,以.db为后缀。名字根据自己的需求调整。

/**
 * @Description: 数据库连接
 * @Author: Etc.End
 * @CreationDate 2023-06-01 22:53:59
 */

const sqlite3 = require('sqlite3')
const NODE_ENV = process.env.NODE_ENV
const path = require('path')
const { app } = require('electron')
let DB_PATH = path.join(app.getAppPath(), '/config/Etc.End.db');
if (NODE_ENV !== 'development') {
    DB_PATH = path.join(path.dirname(app.getPath('exe')), '/config/Etc.End.db');
}
/**
 * @Description: 连接数据库
 * @CreationDate 2023-05-10 13:48:41
 */
function connectDatabase() {
    return new sqlite3.Database(DB_PATH, (err) => {
        if (err) {
            console.error('--------------------connectDatabaseErr' + err.message);
        }
        console.log('👉👉👉-----------------sqlite3已经连接成功')
    });
}

const db = connectDatabase();

/**
 * @Description: 创建数据库,如果用户本地没有数据库的话就创建否则跳过
 * @CreationDate 2023-05-10 13:44:48
 */
function createDataTable() {
    /**
     * @Description: 创建用户表
     * @CreationDate 2023-06-01 22:53:23
     */

    db.serialize(function() {
        db.run('create table if not exists user (id INTEGER PRIMARY KEY AUTOINCREMENT, name text, email text, phone text);');
    });
    // db.close();
}

exports.connectDatabase = connectDatabase;
exports.createDataTable = createDataTable;
exports.db = db;

2、启动脚本,创建数据库👇 👇 👇

接着在electron文件夹下的main.ts中调用createDataTable方法,编写完成以后启动程序。

启动以后控制台会输出👉👉👉-----------------sqlite3已经连接成功并且创建config文件夹以及Etc.End.db文件。

如上图一样执行成功以后我们可以通过navcat工具进行数据库的访问。

到这里我们的数据库以及表就已经创建完成了。

六、操作表👇 👇 👇

操作表的话就是拼接我们的sql,非常的简单。

const { db } = require('./database.ts')

// 查询
function query() {
    return new Promise((resolve, reject) => {
        db.all('SELECT * FROM user', (err, rows) => {
            if (err) {
                reject(err);
            } else {
                resolve(rows);
            }
        });
    });
}

// 新增
function add(data) {
    return new Promise((resolve, reject) => {
        db.run(
            `INSERT INTO user(name, email, phone) VALUES('${data.name}', '${data.email}', '${data.phone}')`,
            function (err) {
                if (err) {
                    reject(err);
                } else {
                    resolve(this.lastID);
                }
            }
        );
    });
}

我是Etc.End。如果文章对你有所帮助,能否帮我点个免费的赞和收藏😍。

 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇 👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/600078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

区间预测 | MATLAB实现基于QRCNN-LSTM-Multihead-Attention多头注意力卷积长短期记忆神经网络多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-LSTM-Multihead-Attention多头注意力卷积长短期记忆神经网络多变量时间序列区间预测 目录 区间预测 | MATLAB实现基于QRCNN-LSTM-Multihead-Attention多头注意力卷积长短期记忆神经网络多变量时间序列区间预测效果一览基本介绍模型描述程序设计…

【最小生成树模型】

最小生成树(Minimum Spanning Tree)模型原理与应用 引言 最小生成树(Minimum Spanning Tree,简称MST)是图论中的经典问题之一,它在实际应用中有着广泛的应用。本文将介绍最小生成树模型的原理和应用&…

导致无人机倾斜摄影免像控点三维重建中出现模型高程偏差大原因及解决方法探讨

导致无人机倾斜摄影免像控点三维重建中出现模型高程偏差大原因及解决方法探讨 无人机倾斜摄影是一种高效的三维测量技术,可用于建筑物、地形和基础设施等场景的快速、精确测量。然而,在进行无人机倾斜摄影时,出现模型高程偏差大的问题是很常…

梅西生涯数据管理系统(Python+数据库)

文章目录 前言MySQL部分1. 导入数据2. 演示说明 Python部分1. 连接数据库2. 登录界面3. 注册4. 主界面5. 查询用户信息6. 修改密码7. 梅西生涯数据分析8. 主函数 尾声 前言 用 Python MySQL 实现简单的数据分析系统,一起来看看吧! 本篇博客主要分为两…

Protobuf快速入门

Protobuf入门 Protobuf介绍 Protobuf (Protocol Buffers) 是谷歌开发的一款无关平台,无关语言,可扩展,轻量级高效的序列化结构的数据格式,用于将自定义数据结构序列化成字节流,和将字节流反序列化为数据结构。所以很…

chatgpt赋能python:Python关联规则——挖掘数据中的隐藏关系

Python关联规则——挖掘数据中的隐藏关系 在数据分析和挖掘中,我们经常需要找到数据集中的关联规则,以便更好地理解数据背后的隐藏关系和趋势。Python关联规则是一种经典的关联规则挖掘算法,它能够识别和发现数据中的有意义的关联性&#xf…

延迟队列的三种实现方案

延迟任务 定时任务:有固定周期的,有明确的触发时间延迟队列:没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发另一个事件,任务可以立即执行,也可以延迟 应用…

chatgpt赋能python:Python关联性分析:介绍及应用案例

Python 关联性分析:介绍及应用案例 在数据分析和机器学习领域中,关联性分析是一种经常被使用的工具。通过分析不同特征之间的相关性,可以获取大量有价值的信息,如客户行为模式、产品关联性等等。Python作为一种高效而简洁的编程语…

SpringCloud(2)

服务拆分和远程调用 任何分布式架构都离不开服务的拆分,微服务也是一样。 2.1.服务拆分原则 这里我总结了微服务拆分时的几个原则: 不同微服务,不要重复开发相同业务微服务数据独立,不要访问其它微服务的数据库微服务可以将自…

【生物力学】《人体骨肌系统生物力学》- 王成焘老师 - 第1章 - 总论

目录回到目录第2章 文章目录 1.1 人体骨肌系统1.1.1 人体骨骼系统1. 骨骼的功能2. 骨骼的构造3. 骨组织的构成1. 骨细胞与骨基质2. 成骨细胞3. 破骨细胞4. 骨原细胞 4. 皮质骨与松质骨的构造1. 皮质骨2. 松质骨 1.1.2 关节与骨连接1. 运动关节2. 局部活动关节3. 微动关节与固定…

chatgpt赋能python:Python中点的SEO

Python中点的SEO 在Python编程中,点(.)是一个非常重要的语法符号,可以用于访问对象属性、调用方法、导入模块等。但是,在SEO优化中,点也有着特殊的含义。 什么是点的SEO含义? 在URL地址中&am…

chatgpt赋能python:Python关联规则代码:优化你的数据分析策略

Python关联规则代码:优化你的数据分析策略 数据分析是当今商业竞争中的重要环节之一。随着数据量的不断增长,为了更好地发现数据之间的关系和规律,数据分析师需要采用一些有效的工具和技术。Python是一种强大的编程语言,可以用于…

白天过节,晚上了解了下 Threejs3D

文章目录 I. 介绍Three.js 3DA. 什么是Three.jsB. Three.js的历史C. Three.js的应用领域 II. 开始使用Three.js 3DA. 安装和引入Three.jsB. 创建Three.js场景C. 添加3D对象到场景D. 控制相机和灯光E. 渲染场景 III. Three.js 3D中的基本概念A. 坐标系统和变换B. 材质和纹理C. 几…

分布式存储Ceph的部署及应用(创建MDS、RBD、RGW 接口)

目录 一、存储基础1.1 单机存储设备1.2 单机存储的问题 二、分布式存储(软件定义的存储 SDS)2.1 分布式存储的类型 三、Ceph 简介3.1 Ceph 优势3.2 Ceph 架构3.3 Ceph 核心组件3.4 Pool、PG 和 OSD 的关系3.5 OSD 存储后端3.6 Ceph 数据的存储过程3.7 Ce…

音视频基础 及 海思sample_venc解读

1、sample的整体架构 (1)sample其实是很多个例程,所以有很多个main (2)每一个例程面向一个典型应用,common是通用性主体函数,我们只分析venc (3)基本的架构是:venc中的main调用venc中的功能函数,再调用common中的功…

chatgpt赋能python:关于Python关联数组

关于Python关联数组 Python是一种高级编程语言,具有简单、易懂的语法和丰富的功能。其中一项强大的特性是Python关联数组,也称为字典。在本文中,我们将探讨什么是Python关联数组、为什么它们很有用、如何使用它们以及应该使用哪种类型的关联…

了解FFmpeg音频通道布局结构:AVChannelLayout结构体解析

1. 引言(Introduction) 1.1 FFmpeg简介(Brief Introduction to FFmpeg) FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。它包含…

计算机网络,期末大题整理part1

1.要发送的数据1010001,采用CRC生成多项式是P(X)X4X2X1,试求应添加在数据后面的余数。 接收端接收到的PPP帧的数据部分是0001110111110111110110,问删除发送端加的零比特后变成怎样的比特串 答:00011101111111111110 &#xff0…

vue3 antd项目实战——修改和增加公用一个弹窗(页面组件传值)

vue3 antd项目实战——修改和增加公用一个弹窗(页面组件传值) 往期知识调用(步骤不懂就看这儿)场景复现实战演示基础modal框的搭建现在我们就可以实现modal框及内部表单的动态绑定了!!! ![在这里…

国内可用 ChatGPT 网页版

前言 ChatGPT持续火热,然鹅国内很多人还是不会使用。 2023年6月1日消息,ChatGPT 聊天机器人可以根据用户的输入生成各种各样的文本,包括代码。但是,加拿大魁北克大学的四位研究人员发现,ChatGPT 生成的代码往往存在严…